通过外键更新一对一关系

时间:2016-08-11 06:26:06

标签: c# entity-framework

我有一个小应用程序,我使用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导航属性。有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

var c = customersContext.Customers.Inclue(x=>x.PersonInfo).Where(x => x.Id == 1).FirstOrDefault(x=>x);