0
我正在构建一个简单的更改跟踪器,以捕获对Sql Azure数据库的所有编辑(不幸的是,Sql Azure本身并不支持此功能,据我所知) 。确定属性是否是EF内核中的导航属性
我走)由ChangeTracker返回修改的条目列表(:
foreach(EntityEntry entry in _context.ChangeTracker.Entries()
.Where(e => e.State == EntityState.Modified))
{
foreach(var prop in entry.Entity
.GetType()
.GetTypeInfo()
.DeclaredProperties)
{
// this line blows up on navigation properties
PropertyEntry propEntry = entry.Property(prop.Name);
if(propEntry.IsModified)
{
var curValue = entry.Property(prop.Name).CurrentValue;
var origValue = entry.Property(prop.Name).OriginalValue;
}
}
}
不幸的是,检索PropertyEntry信息为属性炸毁 - InvalidOperationException异常 - 当属性是一个导航属性,声称无法找到该物业。
我只能将代码包装在try/catch块中......但我很好奇,如果有另一种方式来确定(可能来自元数据)某个属性是导航或相关属性。