插入后的懒惰加载属性

插入后的懒惰加载属性

本文介绍了插入后的懒惰加载属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个父和子对象。如果我执行以下

  Child c = new Child(); 

c.ParentID = parentID;
context.Child.Add(c);
context.SaveChanges();

int i = c.Parent.ParentID; // throws a exception b / c Parent is null

为什么这样做?如果我得到一个新的上下文(保存后),我可以看到父母很好。

解决方案

我想你正在懒惰加载启用。如果您希望在将对象与外键属性添加到上下文中之后,导航属性将被填充,则必须使用 DbSet 创建 code>(而不是使用新实例化对象):

  child c = context.Child.Create(); 

通过活动的延迟加载,这将创建一个代理对象,确保导航属性被加载。 p>

I have a parent and child object. If I do the following

Child c = new Child();

c.ParentID = parentID;
context.Child.Add(c);
context.SaveChanges();

int i = c.Parent.ParentID; // throws an exception b/c Parent is null

Why is this doing this? If I get a new context (after saving), I can see Parent just fine.

解决方案

I guess you are working with lazy loading enabled. If you want that the navigation property gets populated after adding the object with the foreign key property to the context you must use the Create method of DbSet (instead of instantiating the object with new):

Child c = context.Child.Create();

With active lazy loading this will create a proxy object which ensures that the navigation property gets loaded.

这篇关于插入后的懒惰加载属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-28 15:53