【问题标题】:EF4 POCO duplicate table namesEF4 POCO 重复表名
【发布时间】:2012-01-27 10:01:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: entity-framework poco


    【解决方案1】:

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

    【讨论】:

    • 就像我当时担心的那样。我对模型中的实体重命名没有问题。但是,重命名表本身不是一种选择,因为我的项目不是唯一访问这些数据库的项目。因此,唯一的方法是将这些表映射到 EDMX 中的实体。我想我可以通过更改给定 EntitySet 的 EntityType 在 SSDL 中这样做。这留下了未来更新的问题(即,如果我从数据库更新模型,这些更改是否会被覆盖)。
    • 您无法更改 SSDL 中的任何内容。 SSDL 描述数据库中表的真实名称。只需重命名图表中的实体,它就会自动更新从表到新实体名称的映射。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多