是否可以将实体从两个不同的edmx映射到实体框架中的同一个类?

时间:2014-04-24 23:46:48

标签: sql .net sql-server oracle entity-framework

我被要求制作一个程序,我已经与两个不同的数据提供者合作:MS SQL和Oracle。

我编写了两个单独的edmx文件:一个用于MS SQL数据库,另一个用于Oracle SQL数据库。除了他们使用不同数据提供者的事实之外,数据的模式完全相同。

我现在有两个实体集和两个实体类。

由于类具有相同的属性,是否可以对两个实体集使用相同的.net类?

我认为这可能是可能的,因为系统试图在不同的edmx文件中生成两个具有相同名称的类,它会产生一个错误,表示属性被定义了不止一次!

1 个答案:

答案 0 :(得分:2)

如果您的数据库模式完全相同,则可以使用一个配置了多个连接字符串的Model来解决此问题。

为了使代码更清晰,您可以从为模型生成的上下文类中继承两个上下文类:

public class MSSQLContext : YourGeneratedContext 
{ 
    public MSSQLContext() 
        : base("MSSQLDatabase") /*MS SQL connection string name in your config file*/
    { 
    } 
}

public class OracleContext : YourGeneratedContext 
{ 
    public OracleContext() 
        : base("OracleDatabase") /*Oracle connection string name in your config file*/
    { 
    } 
}

接下来,如果需要,您可以创建MSSQLContextOracleContext的实例,您也可以同时使用这两个实例。

using(OracleContext mainContext = new OracleContext())
{
    using(MSSQLContext mirrorContext = new MSSQLContext())
    {

    }
}

http://msdn.microsoft.com/en-us/data/jj592674.aspx