私は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ブロックでコードをラップするだけです...しかし、おそらくメタデータから、プロパティがナビゲーションまたは関連プロパティであるかどうかを判断するもう1つの方法があるかどうか不思議です。