在 Entity Framework 中,您必须创建一个派生自DbContext
IDbSet 属性的类。Entity Framework 中的什么调用了设置器,它是如何工作的?
问问题
448 次
2 回答
4
当您的自定义上下文类被实例化时,基本DbContext
构造函数调用一个名为的私有方法InitializeLazyInternalContext
,该方法又调用另一个名为DiscoverAndInitializeSets
.
此方法创建 a 的新实例DbSetDiscoveryService
,将当前上下文作为构造函数参数传递,然后调用其InitializeSets
方法。该方法依次调用GetSets
,它使用反射来获取派生上下文中可分配的任何属性的列表DbSet<T>
(这包括IDbSet<T>
)。
然后它遍历这个集合并提供没有用 a 标记的属性SuppressDbSetInitializationAttribute
,它DbSet<T>
通过调用 DbContext 的Set<TEntity>
方法并分配结果来分配 a 的实例。
您可以在此处DbSetDiscoveryService
查看代码。
于 2012-12-06T00:17:18.503 回答
0
EF 使用反射来发现 DbContext 派生类上的 IDbSet 属性并相应地设置它们。
于 2012-12-05T23:36:47.653 回答