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

本文关键字:上下文 两个 模型 实体 创建 框架 我可以 | 更新日期: 2023-09-27 18:29:49

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

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来使用数据库,但无法连接这些点来创建解决方案。

EDIT:从"两个数据源"更改为"同一数据库中的两组表"。这显然令人困惑,我很抱歉。

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

有可能吗?可能这是个好主意吗?不会。它会花更多的时间来实现吗?很有可能。

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

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