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

时间:2014-03-01 17:52:50

标签: c# entity-framework ado.net database-first

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

此外,我有两个不同的数据访问层(现在) - 第一个是使用Entity Framework 5 - 数据库第一个方法,第二个是ADO.NET dynicamic DAL,我有我的DB命令工厂。

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

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

    我的问题是:

    1. 如何根据连接字符串(第一个连接字符串 - 三个表,第二个,第二个,等等)管理实体框架以执行不同的(动态)映射详细信息,并将它们映射到相同的实体?
    2. 根据您的经验,还有其他我应该注意的事情吗?

1 个答案:

答案 0 :(得分:1)

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

您可以创建域类:

public class myCommonClass : IDatabaseClass1, DatabaseClass2, DatabaseClass3

然后在您的应用程序中使用myCommonClass。然后,您可以使用Automapper在数据库类和域类之间进行切换。 Automapper生活here

这是一个星期天的早晨,所以回复可能有点粗略,你可能会做很多这样的事情,但是...