在实体框架中,DbContext类实现IObjectContextAdapter接口。当我查看这个界面时,我发现那里只有一个属性
ObjectContext ObjectContext {get;}
但是DbContext类本身并没有这个属性。现在:
这里发生了什么?
答案 0 :(得分:4)
这是显式接口实现的一个例子。
所以理论上理解它看这个例子
interface IExplicit
{
void Explicit();
}
class Test : IExplicit
{
void IExplicit.Explicit()
{
//some implementation goes here
}
}
现在我们可以实例化一个新的Test()
,但要访问IExplicit
实现,我们必须转换类型
var testobj = new Test();
**will throw Compile time error.
testobj.Explicit();
**We can do.
((IExplicit)testobj).Explicit();
现在开始实际执行dbcontext
DbContext明确地实现了该属性。为了便于访问,必须将实例转换为其接口。
public class DbContext : IObjectContextAdapter
{
ObjectContext IObjectContextAdapter.ObjectContext
{
get
{
...
}
}
}
您可以在msdn上找到明确的界面文档。