实体框架5,多个模型,相同实体

时间:2013-12-15 07:58:18

标签: entity-framework

好的,所以我是实体框架的新手......

我有一个现有的SQL数据库,里面有大约500个表,我们正在考虑从Linq-> SQL迁移到Entity Framework作为我们的主要数据访问层。我们还想考虑更多的域驱动设计方法,使用单独的数据上下文来管理应用程序的关键区域(即销售,营销,工作,运输等)。

如果我们采用“客户”之类的共同实体,则会出现在多个模型中。到目前为止,我的示例应用程序中有两个模型。实体框架足够聪明,只能创建一个客户类(我们使用默认的Poco T4模板进行类生成),但是当我尝试运行项目时,我收到以下错误“在客户中存在多个名为'Customer'的类型不同名称空间中的EdmItemCollection。基于约定的映射需要唯一的名称,而不考虑EdmItemCollection中的名称空间“。

所以我认为实体框架不允许“客户”存在于多个模型中吗?如果我真的希望客户出现在多个模型中,我是否必须开始创建不同版本的客户类来处理它?

如果这是一个愚蠢的问题,请提前道歉,但我对EF来说相对较新。

...谢谢

1 个答案:

答案 0 :(得分:1)

你说你正在创建有限上下文的DDD。在有界上下文中,您可以创建多个具有一个或多个相关实体的上下文。为什么要创建多个具有相同名称的模型?

查看Julie Lerman的链接以供参考:

http://msdn.microsoft.com/en-us/magazine/jj883952.aspx

很抱歉,如果我不合时宜。但是,根据我在这种情况下的经验,我们必须创建两个不同的上下文,例如“MarketingModelContext”和SalesModelContext。 MarketingModelContext将包含与marketingmodel相关的所有dbset以及客户实体。同样,SalesModelContext将包含与SalesModel相关的所有dbset以及客户实体。通过这种方式,您将只创建一个客户实体或POCO,可以由两个上下文独立使用。这被称为有限的上下文,正如Julie Lerman所说的那样。它将帮助您分离上下文,关注并帮助您获得更好的性能,因为只能加载所需的上下文(更少的实体)。上面的文章将帮助您解决这个问题。

希望我已经回答了你的问题。