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

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

【问题讨论】:

    标签: asp.net-mvc entity-framework entity-framework-4.1


    【解决方案1】:

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

    public class MyViewModel
    {
         Entity1 Ent{get;set;}
         Entity2 Ent2{get;set;}
         DateTime CurrentDate{get;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】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多