gpt4 book ai didi

asp.net-mvc - MVC : Controller knows about persistence?

转载 作者:行者123 更新时间:2023-12-03 03:35:52 25 4
gpt4 key购买 nike

刚刚开始使用 MVC,有长期的 WebForms 经验。

我不想用面向 UI 的属性(例如“显示名称”或“必需”)来装饰我的实体,而且其中很多实体的方法和属性比我愿意在 View 上公开的要多。

因此,我正在尝试使用 ViewModel 来包装或以其他方式与系统中的实际实体进行交互。我不喜欢的是 Controller 必须知道如何查询存储库,然后实例化一个 ViewModel 来包装它返回的实体。

Controller 与 ViewModel 交互而无需知道它们如何持久化的最佳实践是什么?我看到的所有示例都直接与 EntityFramework 或其他 ORM 对话。

我正在考虑 ViewModel 类上的静态方法,这些方法采用 IRepository 引用和 ID 来加载和返回 ViewModel。这有道理吗?

最佳答案

使用 DependencyInjection 将存储库传递到 Controller 。

public HomeController
{
private readonly IHomeRepository repo;

public HomeController(IHomeRepository repository)
{
repo = repository;
}
}

然后在操作方法中获取项目,并从这些对象创建 ViewModel。

public ActionResult Index()
{
// IEnumerable models are bad, but this is just a quick demo.
var viewModels = repo.GetWidgets().Select(w => new WidgetModel(w));

return View("Index", viewModels);
}

关于asp.net-mvc - MVC : Controller knows about persistence?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34639398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com