实体框架cotext DbContext具有带DbConnection的构造函数。为什么不使用IDbConnection?如何将IDbConnection传递给EF上下文?
是否正常来的DbConnection传递给EF背景下,而不是使用默认的构造函数(它读取的App.config的连接字符串?)
实体框架cotext DbContext具有带DbConnection的构造函数。为什么不使用IDbConnection?如何将IDbConnection传递给EF上下文?
是否正常来的DbConnection传递给EF背景下,而不是使用默认的构造函数(它读取的App.config的连接字符串?)
实体框架cotext的DbContext具有构造函数需要的DbConnection。为什么不使用IDbConnection?
因为我不是英孚团队的一员,所以我不能代表他们做任何事情。在我看来,像DbConnection
,因为抽象基础已经为你做了一些实现,所以你的任何overriden类都可以“免费”获取。
我找到了一个体面的答案here:
的一个主要好处有版本做。随着微软向供应商增加新功能,他们需要向开发人员公开此功能。
使用旧接口的方法,他们将不得不改变接口(但它们不会因为接口是不可变的)以及所有在框架中实现接口的类。由开发人员编写的实现接口的任何自定义类也需要进行修改,以实现接口的任何更改。如果他们不断添加新功能(他们会这么做),这就成为需要更换接口或实现新功能以提供新功能的恶性循环。
是否正常来的DbConnection传递给EF背景下,而不是使用默认的构造函数?
的docs是为什么你会使用此重载很清楚:
的构造方法使用现有的连接连接到数据库的新上下文实例。如果contextOwnsConnection为false,则在处理上下文时不会处理连接。
如果你已经有了一个开放的上下文并且想要通过它,你可以这样做。 “是否正常”将因用例不同而异。我自己根本没有使用过载。