我有一个小应用程序,我使用EF CodeFirst方法。模型上的一个与另一个有一对一的关系。这是一个例子
public class Customer
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id {get; set;}
public string Name {get; set;}
public int PersonInfoId {get; set;}
public virtual Person PersonInfo {get; set;}
}
public class Person
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id {get; set;}
public string Name {get; set;}
//Some other properties
}
我创建了一个新客户并将ParentId设置为现有客户
Customer superCustomer = new Customer();
superCustomer.PersonInfoId = 21;
customersContext.Customers.Add(superCustomer);
当我尝试选择此客户时,我获得了所有数据,但导航属性为空。
var c = customersContext.Customers.Where(x => x.Id == 1).FirstOrDefault(x=>x);
c.Person //is null :(
但是,如果我重新启动应用程序而不是选择此特定客户,导航属性将像往常一样在EF中填充dymamic代理。在重新创建上下文之前,看起来EF会执行nit retrievev导航属性。有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
尝试以下方法:
var c = customersContext.Customers.Inclue(x=>x.PersonInfo).Where(x => x.Id == 1).FirstOrDefault(x=>x);