SaveChanges 上的 EF 从关系中获取具有特定类型的实体
EF on SaveChanges get entity that has specific type from relation
我有测试类:
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 中,我想知道即将到来的实体是否与 Human 相关,并获取 Human 实体。
public override int SaveChanges()
{
List<ObjectStateEntry> changedEntries =
((IObjectContextAdapter)this).ObjectContext
.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified).ToList();
}
当我更改 Pet 实体中的名称时,在 SaveChanges 中只有实体 Pet 的状态已修改,现在我想从这个实体 Pet 知道并获取 Human 实体。我会知道 Human 已更改为 因为他的 Pet 有其他名称,一些信息已更改。有什么想法吗?
看起来您可能需要导航属性。
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;}
}
然后您可以像这样从 Pet
对象引用 Human
: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;}
}
我有测试类:
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 中,我想知道即将到来的实体是否与 Human 相关,并获取 Human 实体。
public override int SaveChanges()
{
List<ObjectStateEntry> changedEntries =
((IObjectContextAdapter)this).ObjectContext
.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified).ToList();
}
当我更改 Pet 实体中的名称时,在 SaveChanges 中只有实体 Pet 的状态已修改,现在我想从这个实体 Pet 知道并获取 Human 实体。我会知道 Human 已更改为 因为他的 Pet 有其他名称,一些信息已更改。有什么想法吗?
看起来您可能需要导航属性。
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;}
}
然后您可以像这样从 Pet
对象引用 Human
: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;}
}