EF 4.1 中的多个实体

Posted

技术标签:

【中文标题】EF 4.1 中的多个实体【英文标题】:multiple entities in EF 4.1 【发布时间】:2011-03-30 07:45:03 【问题描述】:

我正在开发一个 MVC 应用程序,该应用程序使用来自不同实体的数据并显示当前日期。我想将此数据从控制器传递到视图。我应该创建一个实体来持有其他实体吗?

【问题讨论】:

【参考方案1】:

你可以制作一个视图模型,并将你需要的一切都放在这个视图模型的视图中。

public class MyViewModel

     Entity1 Entget;set;
     Entity2 Ent2get;set;
     DateTime CurrentDateget;set;  


public ActionResult index()

    MyViewModel model = new MyviewModel();
    model.Ent = new Entity1();
    model.Ent2 = new Entity2();
    model.CurrentDate = DateTime.Now;
    return View(model) 

您的视图现在必须接受 VieModel 而不是 db 生成的实体。鉴于您可以访问像

这样的实体
<%:Model.Ent1.SomeProperty%>
<%:Model.CurrentDate%>
<%:Model.Ent2.SomeProperty2%>

【讨论】:

@adeel: 我应该把从数据库中获取数据并在视图模型中填充实体/视图模型的逻辑放在哪里? @DotnetSparrow 您应该将该逻辑放入控制器的 Action 方法中。这并不意味着您可以直接在控制器中访问数据库对象。您应该创建一个将对象返回给调用代码的层。如果您还不熟悉存储库模式,请查看它【参考方案2】:

我要做的是创建一个 ViewModel,它只包含特定于视图的信息,而不是整个实体。

【讨论】:

【参考方案3】:

您真的需要一个单独的实体吗?我得到的是为什么不创建一个匿名对象来返回所需的实体或只返回所需的属性。每个数据场景都有一个实体可能会出现潜在问题。

【讨论】:

以上是关于EF 4.1 中的多个实体的主要内容,如果未能解决你的问题,请参考以下文章

EF 4.1 模型中的图像数据类型优先

一个存储实体属性是不是只能映射到EF中的一个类实体属性?

Windows窗体应用程序中的连接字符串EF 4.1代码优先SQL紧凑

与 ObjectContext 相比,为啥在 EF 4.1 中插入实体如此缓慢?

在 EF 4.1 中使用引用字段作为实体键的一部分

EF 4.1 DbContext Generattor - 将实体放在不同的项目中?