2011-03-30 47 views
0

我正在使用来自不同实体的数据以及显示当前日期的MVC应用程序。我想从控制器传递这些数据来查看。我应该创建一个实体来存放其他实体吗?EF 4.1中的多个实体

回答

0

我会做的是创建一个ViewModel,它只保存视图的特定信息,而不是整个实体。

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%> 
+0

@adeel:我应该把逻辑从db中获取数据并在viewmodel中填充entities/viewmodel? – DotnetSparrow 2011-03-30 08:30:37

+1

@DotnetSparrow你应该把你的控制器的Action方法中的逻辑。这并不意味着你直接在控制器中访问数据库对象。你应该创建一个将对象返回给调用代码的图层。如果您还不熟悉它,请参阅存储库模式 – 2011-03-30 09:18:53

0

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

相关问题