Entity framework 在同一上下文中添加对象时,实体框架不返回代理
我有一门课:Entity framework 在同一上下文中添加对象时,实体框架不返回代理,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,我有一门课: public class Company { public System.Guid Id { get; set; } public Nullable<System.Guid> CreatedById { get; set; } public virtual Users CreatedBy { get; set; } } 然后我使用相同的上下文检索公司: var retrievedCompany = Context.Set<
public class Company
{
public System.Guid Id { get; set; }
public Nullable<System.Guid> CreatedById { get; set; }
public virtual Users CreatedBy { get; set; }
}
然后我使用相同的上下文检索公司:
var retrievedCompany = Context.Set<Company>().FirstOrDefault(item => item.Id == newCompanyId);
var retrievedCompany=Context.Set();
retrievedCompany
具有类型Company
,并且它不是动态代理,因此名为CreatedBy
的导航属性不起作用
是否可以改为获取代理?您需要使用
Create()
使实体框架了解您的新实体,而不仅仅是实例化公司的实例。你可以用
var company = ContextSet<Company>().Create();
var company=ContextSet().Create();
要创建公司
类型的新实例,请将其添加到上下文中。将对象添加到上下文时,它将尝试自动获取导航属性,因此应该在SaveChanges()
之前填充该属性
之后,您将能够在上下文的同一实例中使用该导航属性。是否不关闭代理创建:context.Configuration.ProxyCreationEnabled=false代码>
var company = ContextSet<Company>().Create();