0

所以我有一个由EntityFramework4为我的sqlexpress08数据库生成的DataEntity类。此数据上下文通过WCF数据服务/ Odata暴露给silverlight和win表单客户端。我应该在哪里把EF实体和数据注释放在asp.net mvc +实体框架项目中

数据实体+ edmx文件(由EF4生成)应该放在单独的类库中吗?

这里的问题是我会为几个实体指定数据注释,然后其中一些需要特定的MVC属性(如CompareAttribute),因此类库也会引用mvc dlls。也有碰巧有实体用户将被封装或包装到网站的IIdentity中。所以它很适合mvc网站。 或者它应该在mvc项目本身的Base文件夹中?

大多数情况下,网站是围绕数据库驱动的数据,比如批准用户,更改全局设置等。真正的业务发生在silverlight和win表单应用中。

我使用mvc3 rc2与剃刀。
感谢

回答

5

如果数据实体+ EDMX文件(EF4生成)在一个单独的类库中去?

恕我直言,特定于某些数据访问技术(在你的情况下,实体框架)的所有数据访问逻辑应该进入一个单独的程序集。那里不应该引用MVC特定的程序集。

在您的ASP.NET MVC应用程序中,您将引用此程序集并编写视图模型。这些视图模型将包含任何MVC特定的属性。然后,您可以在您的模型类和将传递给视图的视图模型之间进行映射。可以使用AutoMapper来促进这项任务。

+0

嗯我以前听说过这个。还有一个问题,所以在我的Mvc项目中,我会拥有像'IRepository'这样的实现,它会查询实体对象,然后返回** ViewModels ** ?? – gideon 2010-12-21 13:43:37

+1

@giddy,IRepository不应该返回视图模型。它应该与域模型一起工作。这些域模型和视图模型之间的映射应由控制器执行。就其位置而言,恕我直言,它更适合您的数据访问层,而不是您的MVC应用程序。 – 2010-12-21 13:46:11

+0

啊!好吧,我花了一段时间,但我明白了!奖励积分! = d – gideon 2010-12-21 14:23:28