可能重复:
ASP.NET MVC - Linq to Entities模型作为ViewModel - 这是一个好习惯吗?
可以使用EF实体类作为ASP.NET MVC中的视图模型吗?
如果viewmodel与EF实体类的90%相同怎么办?
假设我在Entity Framework模型中有一个Survey类.它90%匹配视图编辑所需的数据.与视图模型应该具有的唯一区别 - 是要在其中使用的一个或多个属性(填充Survey对象所需的因为EF类不能直接映射到它的属性的表示方式(子复选框,无线电组等) .))
你使用ViewData []传递它们吗?或者使用新的附加属性创建Survey类(SurveyViewModel)的副本(它应该能够从Survey复制数据并返回到它)?
编辑: 我也试图避免使用Survey作为SurveyViewModel属性.当使用UpdateModel或默认绑定器更新某些Survey属性时,看起来很奇怪,而其他(无法直接映射到实体) - 在控制器中使用SurveViewModel自定义属性.
我一直在阅读这些教程(特别是那些使用Linq-To-Entities的教程)并且我理解了基本概念,但是有些东西给了我一些问题.
教程通常只涉及仅使用基本创建,更新和删除语句的简单模型和表单.我有点复杂,我不确定我是否正确地采用这种方式,因为当需要处理六个数据库对象的关系时,教程就会停止帮助.
对于post方法,执行CRUD操作的常用方法
entities.AddToTableSet(myClass);
entities.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
不会做我想要的,因为完全实现的类没有被发布到控制器方法.我可以发布单个字段,表单集合或多个DTO对象,然后调用服务或存储库上的方法来获取从表单发布的信息,以及它需要查询或创建自身的信息,然后从所有这些,创建我可以保存的数据库对象.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(int id, [Bind(Exclude = "Id")] ClassA classA,
[Bind(Exclude = "Id")]ClassB classB)
{
// Validation occurs here
if(!ModelState.IsValid)
return View();
try
{
_someRepositoryOrService.Add(id, classA, classB);
return RedirectToAction("Index", new { id = id });
}
catch(Exception ex)
{
// Logging and exception handling occurs here
}
}
public void Add(int id, ClassA classA, ClassB classB)
{
EntityA eA = new EntityA
{
// Set a bunch of properties using the two classes and …Run Code Online (Sandbox Code Playgroud)