我有一个班级:
public class Company
{
public System.Guid Id { get; set; }
public Nullable<System.Guid> CreatedById { get; set; }
public virtual Users CreatedBy { get; set; }
}
我正在将Company
类的新对象添加到上下文并设置CreatedById
字段:
var newCompanyId = Guid.NewGuid();
var company = new Company();
company.Id = newCompanyId;
company.CreatedById = someId;
Context.Set<Company>().Add(company);
然后我使用相同的上下文来检索公司:
var retrievedCompany = Context.Set<Company>().FirstOrDefault(item => item.Id == newCompanyId);
retrievedCompany
的类型为Company
,并且它不是动态代理,因此名为CreatedBy
的导航属性不起作用。
是否有可能获得代理?
答案 0 :(得分:2)
您需要使用Create()
让实体框架了解您的新实体,而不是仅仅实例化Company
的实例。你可以使用
var company = ContextSet<Company>().Create();
创建Company
类型的新实例,然后将其添加到上下文中。将对象添加到上下文时,它将尝试自动获取导航属性,以便在SaveChanges()
之前填充它。
然后,您将能够在稍后的同一个上下文实例中使用该导航属性。