从EF数据库优先方法更改生成的上下文是否不好?

时间:2019-07-03 09:03:10

标签: c# entity-framework unit-testing ef-database-first

我使用的数据库模型是使用entity framework database first approach在.edmx文件中生成的。 现在,我想使用InMemory数据库测试数据库层。但是,通过使用Effort找到的方法使我可以更改.edmx文件中生成的上下文。

我认为更改生成的上下文与数据库优先方法相矛盾。

标准生成的上下文是:

    public DbContext()
        : base("name=DbConnectionstring")
    { }

从App.Config文件获取连接字符串时,我没有找到为App.Config文件创建InMemory连接字符串的方法。

所需的努力背景是:

    public DbContext(DbConnection connection) 
        : base(connection, false)
    { }

到目前为止,我所知道的所有Entity框架示例都与DbOptions/DbOptionsBuilders有关。 这些选项确实更适合于依赖项注入吗?

测试使用数据库优先方法开发的应用程序可能有所不同,并且对于InMemory数据库并不常见。那么任何人都可以通过消息来源对此提供一些适当的建议吗?

1 个答案:

答案 0 :(得分:1)

您可以简单地创建另一个file.cs,它将另一个构造函数添加到您生成的上下文中,因为生成的代码使用了partial class滞后功能。

只需创建。

DbContext.Effort.cs

namespace blah.blah.blah
{
     public partial class MyContext
     {

         public MyContext(DbConnection connection) 
            : base(connection, false)
         { }

     }

}