我有测试课程:
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实体。我会知道人类改变了,因为他的宠物有其他名字,一些信息已经改变。有什么想法吗?
答案 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;}
}