是什么叫实体中的setter?

时间:2012-12-05 23:14:27

标签: entity-framework

在Entity Framework中,您必须创建一个使用IDbSet属性从DbContext派生的类。实体框架中的内容调用了setter以及它是如何工作的?

2 个答案:

答案 0 :(得分:3)

当您的自定义上下文类被实例化时,基础DbContext构造函数会调用名为InitializeLazyInternalContext的私有方法,该方法又调用另一个名为DiscoverAndInitializeSets的私有方法。

此方法创建DbSetDiscoveryService的新实例,将当前上下文作为构造函数参数传递,然后调用其InitializeSets方法。此方法依次调用GetSets,它使用反射来获取派生上下文中可从DbSet<T>分配的任何属性的列表(包括IDbSet<T>)。

然后循环遍历此集合并提供该属性未标记SuppressDbSetInitializationAttribute,它通过调用DbContext的DbSet<T>方法并分配结果来分配Set<TEntity>的实例

您可以查看DbSetDiscoveryService代码here

答案 1 :(得分:0)

EF使用反射来发现DbContext派生类的IDbSet属性并相应地设置它们。