C# 实体框架更改跟踪API和引用条目
希望在我的DbContext子类上编写通用审计代码C# 实体框架更改跟踪API和引用条目,c#,entity-framework,ado.net,change-tracking,entity-framework-4.1,C#,Entity Framework,Ado.net,Change Tracking,Entity Framework 4.1,希望在我的DbContext子类上编写通用审计代码 foreach (var entry in this.ChangeTracker.Entries<MyClass>()) { if (entry.State == EntityState.Modified) { var entityProperties = entry.Entity.GetType().GetProperties(); foreach (var entityProper
foreach (var entry in this.ChangeTracker.Entries<MyClass>())
{
if (entry.State == EntityState.Modified)
{
var entityProperties = entry.Entity.GetType().GetProperties();
foreach (var entityProperty in entityProperties)
{
DbMemberEntry propertyEntry = entry.Member(property.Name);
if (propertyEntry is DbPropertyEntry)
{
// IsModified available
}
else if (propertyEntry is DbReferenceEntry)
{
// IsModified not available
}
}
}
}
foreach(this.ChangeTracker.Entries()中的var条目)
{
if(entry.State==EntityState.Modified)
{
var entityProperties=entry.Entity.GetType().GetProperties();
foreach(entityProperty中的var entityProperty)
{
DbMemberEntry propertyEntry=entry.Member(property.Name);
if(propertyEntry为DbPropertyEntry)
{
//已修改可用
}
else if(propertyEntry为DbReferenceEntry)
{
//IsModified不可用
}
}
}
}
1) 如果我只更改引用属性,则entry.State值为“Unchanged”
2) 即使将点1设置为“Modified”,DbReferenceEntry类似乎也没有IsModified属性,也没有原始值
我认为这是可能的,因为EF必须跟踪这一点
有人能帮忙吗
谢谢,
Ben是参考条目(导航属性)不跟踪更改。它由外键属性(在外键关联的情况下)或独立对象跟踪独立关联的更改负责。在ObjectContext API中,您可以通过ObjectStateManager
获取这些对象,但DbContext API似乎没有可用的对象。我问了一个关于这个的问题