Entity framework EF4 POCO重复表名

Entity framework EF4 POCO重复表名,entity-framework,poco,Entity Framework,Poco,我目前正在尝试将一个项目迁移到EF4 POCOs,以便在我的业务逻辑中去掉EntityObject,并遇到了一个表名重复的问题。DAL可以访问3个不同的数据库,有3个.edmx文件,每个数据库一个 但是,这些数据库中的一些表共享相同的名称,例如DB1.CUSTOMER和DB2.CUSTOMER。我设法在不同的名称空间(每个数据库一个名称空间)中创建了相关实体,如MyApp.Db1.CUSTOMER和MyApp.Db2.CUSTOMER,问题是EF无法决定选择哪一个,并声称存在歧义,但事实并非如此

我目前正在尝试将一个项目迁移到EF4 POCOs,以便在我的业务逻辑中去掉EntityObject,并遇到了一个表名重复的问题。DAL可以访问3个不同的数据库,有3个.edmx文件,每个数据库一个

但是,这些数据库中的一些表共享相同的名称,例如DB1.CUSTOMER和DB2.CUSTOMER。我设法在不同的名称空间(每个数据库一个名称空间)中创建了相关实体,如MyApp.Db1.CUSTOMER和MyApp.Db2.CUSTOMER,问题是EF无法决定选择哪一个,并声称存在歧义,但事实并非如此


是否有任何方法可以手动将实体映射到各自的POCO或任何解决方法?这是EF 4.2。

EF在识别实体类型时不使用名称空间。类的名称与模型图(EDMX)中的实体名称直接匹配。因此,解决方法是在不同的模型中使用不同的名称,这也将使您的代码更易于阅读。

正如我当时担心的那样。我对重命名模型中的实体没有问题。但是,重命名表本身不是一个选项,因为我的项目不是唯一访问这些数据库的项目。因此,唯一的方法是将这些表映射到EDMX中的实体。我想我可以通过更改给定EntitySet的EntityType在SSDL中实现这一点。这就留下了将来更新的问题(即,如果我从数据库更新模型,这些更改将被覆盖)。您不能在SSDL中更改任何内容。SSDL描述数据库中表的真实名称。只需重命名图中的实体,它就会自动更新从表到新实体名称的映射。