通过外键更新一对一关系
本文关键字:一对一 关系 更新 | 更新日期: 2023-09-27 18:01:57
我有一个使用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
}
我创建了一个新的Customer,并将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中通常那样被动态代理填充。看起来EF在重新创建上下文之前不会检索导航属性。有办法解决这个问题吗?
尝试以下操作:
var c = customersContext.Customers.Inclue(x=>x.PersonInfo).Where(x => x.Id == 1).FirstOrDefault(x=>x);