我可以为两个上下文创建两个具有完全相同模型的实体框架上下文吗?

时间:2012-04-03 18:32:52

标签: c# entity-framework-4.1

我在同一个数据库中有两组独立的表,它们对完全相同的数据进行建模,但处于不同的状态。一个是实时状态,另一个是暂存状态(不是测试)。我正在尝试创建一个模型,允许我选择在运行时使用哪个datasource / datacontext,但它们必须具有相同的模型。

public TestObject GetTestObject(string testNum, string Environment)
{
    IDataContext context = DataContextFactory.GetContext(Environment);
    TestObject t = (from test in context.Orderable
                         where test.TestNumber == testNum
                         select test).FirstOrDefault();
    return t;
}

显然,根据上面的代码,如果环境是暂存,我从一组表中提取。如果环境是实时的,那么我从一组不同的表中拉出来。

所以,通常使用EF,我会得到两个不同名称的独立模型。如果我尝试给他们相同的名字,我会得到错误,说明项目中已经有一个具有该名称的对象。

我最近调查了自己的POCO以使用数据库,但是无法连接点以创建解决方案。

编辑:从“两个数据源”更改为“同一数据库中的两组表”。这显然令人困惑,道歉。

2 个答案:

答案 0 :(得分:1)

有可能吗?大概。这是个好主意吗?不会。它需要更多的时间才能使它工作吗?最有可能。

答案 1 :(得分:0)

如果我正确理解你的要求,你真的不需要两个上下文。

您只需要换掉在运行时实例化上下文时使用的连接字符串。这将允许您将上下文指向生产或临时数据库。