SaveChanges上的EF从关系中获取具有特定类型的实体

时间:2015-01-14 15:41:24

标签: c# .net entity-framework

我有测试课程:

public class Human
{
    public string Id { get; set; }
    public string Name { get; set; }
    public Pet Pet { get; set; }
}

public class Pet
{
    public string Id { get; set; }
    public string Name { get; set; }
}
在SaveChanges中

我想知道即将到来的实体是否与人类有关系,并获得人类实体。

public override int SaveChanges()
{
    List<ObjectStateEntry> changedEntries =
                            ((IObjectContextAdapter)this).ObjectContext
    .ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified).ToList();
}

当我更改Pet实体中的Name时,在SaveChanges中只有实体Pet已修改状态,现在来自此实体Pet我想知道并获取Human实体。我会知道人类改变了,因为他的宠物有其他名字,一些信息已经改变。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

看起来您可能需要导航属性。

public class Human {
    public string Id { get; set; }
    public string Name { get; set; }
    public Pet Pet { get; set; }
}

public class Pet {
    public string Id { get; set; }
    public string Name { get; set; }
    public string HumanId {get; set;}
    public virtual Human {get; set;}
}

然后,您可以在Human对象中引用Pet,如下所示:pet.Human

我会重构我的课程,但这取决于你:

public class Human {
    [Key]
    public int HumanId { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Pet> Pets { get; set; }
}

public class Pet {
    [Key]
    public int PetId { get; set; }
    public string Name { get; set; }
    public int HumanId {get; set;}
    public virtual Human Owner {get; set;}
}