我被要求制作一个程序,我已经与两个不同的数据提供者合作:MS SQL和Oracle。
我编写了两个单独的edmx文件:一个用于MS SQL数据库,另一个用于Oracle SQL数据库。除了他们使用不同数据提供者的事实之外,数据的模式完全相同。
我现在有两个实体集和两个实体类。
由于类具有相同的属性,是否可以对两个实体集使用相同的.net类?
我认为这可能是可能的,因为系统试图在不同的edmx文件中生成两个具有相同名称的类,它会产生一个错误,表示属性被定义了不止一次!
答案 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*/
{
}
}
接下来,如果需要,您可以创建MSSQLContext
或OracleContext
的实例,您也可以同时使用这两个实例。
using(OracleContext mainContext = new OracleContext())
{
using(MSSQLContext mirrorContext = new MSSQLContext())
{
}
}