如果我想使用每个实体的repositorys和每个视图的Viewmodels进行组合,它是如何工作的?
我可以查看任何网站提示吗? Maby有人可以给出一个简单的例子吗?
由于
最诚挚的问候!
答案 0 :(得分:3)
我喜欢以下结构(来自着名的Steven Sanderson's Pro ASP.NET MVC series):
域项目(业务逻辑):
Web UI项目(MVC Web App):
主要的是你将业务逻辑(应该存放你的存储库)与Web UI(MVC项目)分开
在这种情况下,您的Controller类引用域层并使用DI / IoC来调用存储库的正确实例。
示例控制器类:
namespace MyMvcProject
{
using System.Whatever;
using MyDomainLayer;
public class MyController : Controller
{
private readonly IMyRepository _myRepository;
public MyController(IMyRepository myRepository)
{
// Resolved using your favorite DI/IoC Container:
this._myRepository = myRepository;
}
public ActionResult DoSomething()
{
var stuff = _myRepository.GetStuff();
return View(stuff);
}
}
}
答案 1 :(得分:2)
使用AutoMapper将数据从实体复制到模型,反之亦然。 这将减少你必须编写的许多“管道”代码。
答案 2 :(得分:0)
我不是一名专业的开发人员,但我认为史蒂夫桑德森的模型不适合某些项目,因为你正在直接对模型进行观察。如果您只想展示一些属性而不是所有属性会发生什么?您的完整型号正在前往视野。
我认为你的观点必须适用于viewmodel类,而不是直接来自orm(通过存储库等)的模型
我发现的唯一问题是模型到viewmodel和viewmodel到模型之间的映射过程。让我解释一下......
我试图用automap进行映射,模型之间的方向 - > viewmodel运行正常,但是在另一个方向(viewmodel to model)我没有找到自动执行的方法,因为viewmodel通常不拥有模型所具有的所有属性,并且如果你做了很多自动化来对对象建模很多属性是空的。 最后,您需要始终制作一些手动映射。
欢迎这种情况的想法。 感谢