EF代码优先方法中DbContext类的空构造函数的目的是什么?

时间:2018-09-27 12:45:43

标签: c# entity-framework constructor ef-code-first

我有一个简单的上下文类定义:

namespace PowerSupply.Persistance.Facade
{
    class PowerSupplyDBContext : DbContext
    {
        public PowerSupplyDBContext() : base("PowerSupplyDatabase")
        {

        }
    }
} 

的体内没有任何东西
public PowerSupplyDBContext() : base("PowerSupplyDatabase")
            {

此空构造函数的用途是什么。这个空的构造函数如何工作?

2 个答案:

答案 0 :(得分:2)

它调用基类的构造函数。因此它不是空的。它只是没有添加新的东西。

使用“空”构造函数的原因很多。

您可能没有任何新属性,或者在其他地方实例化了这些属性(我不推荐)

您可能只想添加功能(新方法),以便扩展类,并使用基类的属性和方法实现新方法。因此,您不需要构造函数执行与基类相对的新操作。

或者它具有许多构造函数,并且在需要使用类的有限功能或默认值的情况下使用空构造函数。

答案 1 :(得分:2)

最佳做法是,在任何可能由第三方/其他项目/在编译器无法捕获该类更改的地方使用的类中包含空构造函数。

如果您省略了空的构造函数,并且该类由第三方或您的另一个项目/应用程序使用,则您以后将无法更改该类以包含带有参数的构造函数。否则,该类以前不依赖于传递构造函数参数的所有用法都会中断,因为它们将没有空构造函数可供引用。