C# 一个edmx文件,多个具有不同实现的数据库-支持映射详细信息

C# 一个edmx文件,多个具有不同实现的数据库-支持映射详细信息,c#,entity-framework,ado.net,database-first,C#,Entity Framework,Ado.net,Database First,我有一个概念(领域)模型,它在不同的数据库中以不同的方式实现。 例如,第一个db中的继承是每个类型的表,第二个db中的具体类型是表,第三个db中的所有类型属性都合并到一个表中。类似于此: 此外,我有两个不同的数据访问层(目前)-第一个是使用实体框架5-数据库优先方法,第二个是ADO.NET dynicamic DAL,我有我的DB命令工厂 客户端应用程序将使用这些数据库,客户端应在启动时选择: 要连接的数据库(连接字符串)和 使用数据的数据访问层(EF或经典ADO.NET) 根据客户的选择,系统

我有一个概念(领域)模型,它在不同的数据库中以不同的方式实现。 例如,第一个db中的继承是每个类型的表,第二个db中的具体类型是表,第三个db中的所有类型属性都合并到一个表中。类似于此:

此外,我有两个不同的数据访问层(目前)-第一个是使用实体框架5-数据库优先方法,第二个是ADO.NET dynicamic DAL,我有我的DB命令工厂

客户端应用程序将使用这些数据库,客户端应在启动时选择:

  • 要连接的数据库(连接字符串)和
  • 使用数据的数据访问层(EF或经典ADO.NET)
  • 根据客户的选择,系统应使用指定的数据库和选定的DAL

    我的问题是:

  • 如何管理实体框架,根据连接字符串(第一个连接字符串-三个表、第二个表、第三个表等)执行不同的(动态)映射细节,并将它们映射到相同的实体
  • 根据你的经验,我还有什么需要注意的吗

  • 这可能太简单了。创建一个从所有三个基类继承的公共类。EDMX中的数据库类始终是分部类,因此在同一命名空间中创建另一个分部类,否则该名称空间为空。使用分部类生成接口

    您可以创建域类:

    public class myCommonClass : IDatabaseClass1, DatabaseClass2, DatabaseClass3
    
    然后在应用程序中使用myCommonClass。然后可以使用Automapper在数据库类和域类之间切换。汽车制造商还活着


    这是一个星期天的早晨,所以回复可能有点粗略,而且您可能已经做了很多这方面的工作,但是…

    您是连接到同一类型的数据库(SQL Server、Oracle等),还是使用不同的技术。它们是否都具有相同的表和表设计?所有数据库都位于MS SQL Server上。表是不同的,我已经发布了上面的链接-例如。对于同一个conceptual-heritation模型,继承在每个数据库中以不同的方式实现。恐怕我的问题比你的回答略为粗略我已经有类似的东西了,我正在努力避免使用Automapper。现在,我的主要问题是如何让所有三个不同的映射(来自EDMX)使用相同的实体-多个EDMX,一个实体;您的存储库层需要知道它正在与哪个物理数据库通信。另外,我发现Automapper是一个很好的工具-你有什么保留?Automapper的问题是,它可能是一个更多的层和对整个事情的引用,我想让它更简单。彼得,请看一下我的新问题,上面提到的问题。