1
6
这是针对代码优先的POCO对象的,用于帮助Shimmy和其他想知道如何首先处理代码的人。 我认为您可能不理解实体框架是如何工作的。这也花了我一段时间来理解。 实体框架通过使用代理类对POCO对象进行子类化来工作,代理类用于序列化和反序列化对象。这意味着,如果您有一个私有的set方法或属性(或者它全部丢失),则子类方法无法设置该属性。希望实体框架使用的setter和属性必须是受保护的或公共的。 如果您希望延迟加载复杂的属性,那么还必须使这些属性成为虚拟的,这样实体框架也可以代理这些属性。如果您希望预先加载它们,则必须使用include方法。 要完全回答您的问题,是的,您必须将setter属性添加到您希望Entity Framework为您设置的所有属性中。不,实体框架不提供映射没有setter的属性的方法。 nhibernate的工作方式有点不同,它覆盖了所有的属性,我相信它在它生成的子类中使用私有变量,设置私有变量,然后被覆盖的属性返回私有变量。也就是说,nhibernate不需要在属性本身上设置setter,而实体框架实际上设置了属性。这样做对实体框架的好处是它返回您创建的实际POCO对象,而不是像nhibernate这样的子类对象。获得子类对象的唯一时间是使用延迟加载的复杂属性时,实体框架返回代理子类。当您实际检索数据时,代理会再次将自己设置为POCO类。 你的设置者应该是公开的或受保护的,就像你有问题一样:
|
2
5
我玩过这个小游戏,我的结论是:
|
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
Dansih · .Net核心自定义身份验证方案 2 年前 |
lolorekkk · 面板插入。NET WinForm 2 年前 |