1
6
这是针对代码优先的POCO对象的,用于帮助Shimmy和其他想知道如何首先处理代码的人。 我认为您可能不理解实体框架是如何工作的。这也花了我一段时间来理解。 实体框架通过使用代理类对POCO对象进行子类化来工作,代理类用于序列化和反序列化对象。这意味着,如果您有一个私有的set方法或属性(或者它全部丢失),则子类方法无法设置该属性。希望实体框架使用的setter和属性必须是受保护的或公共的。 如果您希望延迟加载复杂的属性,那么还必须使这些属性成为虚拟的,这样实体框架也可以代理这些属性。如果您希望预先加载它们,则必须使用include方法。 要完全回答您的问题,是的,您必须将setter属性添加到您希望Entity Framework为您设置的所有属性中。不,实体框架不提供映射没有setter的属性的方法。 nhibernate的工作方式有点不同,它覆盖了所有的属性,我相信它在它生成的子类中使用私有变量,设置私有变量,然后被覆盖的属性返回私有变量。也就是说,nhibernate不需要在属性本身上设置setter,而实体框架实际上设置了属性。这样做对实体框架的好处是它返回您创建的实际POCO对象,而不是像nhibernate这样的子类对象。获得子类对象的唯一时间是使用延迟加载的复杂属性时,实体框架返回代理子类。当您实际检索数据时,代理会再次将自己设置为POCO类。 你的设置者应该是公开的或受保护的,就像你有问题一样:
|
2
5
我玩过这个小游戏,我的结论是:
|
dagda1 · 实体框架一对多有条件 8 年前 |
Ahmad · sql正常工作时,Linq查询不工作 8 年前 |
techV · 避免使用带有多个where子句的Lambda表达式 9 年前 |
Umesh Patil · 使用实体框架或linq显示记录 9 年前 |
mgsdew · 无法将类型“System.Collections.Generic.List<AnonymousType#1>”隐式转换为“System.Collections.Generic.List<DAL.HRM_PersonalInformations>” 9 年前 |
Gautam T Goudar · EF 4.0:根据条件包括 11 年前 |