NHibernateでコードによるマッピングを使用しています。いくつかのプロパティを持つクラスを取得しました。それらの1つは、DBのどの列にも関連していませんが、getterとsetterがあります。
ModelMapperではなくConventionModelMapperを使用しています。最初のものは、すべてのプロパティがマップされていることを前提としています。
NHibernateに無視するように指示するにはどうすればよいですか?
NHibernateでコードによるマッピングを使用しています。いくつかのプロパティを持つクラスを取得しました。それらの1つは、DBのどの列にも関連していませんが、getterとsetterがあります。
ModelMapperではなくConventionModelMapperを使用しています。最初のものは、すべてのプロパティがマップされていることを前提としています。
NHibernateに無視するように指示するにはどうすればよいですか?
属性を作成し、その属性をプロパティにアタッチして、mapper.IsPersistentPropertyメソッドで確認する方が簡単だと思います。このようなもの:
class IngnoreAttribute : Attribute
{
}
class Foo
{
[Ignore]
public virtual string Bar { get; set; }
}
mapper.IsPersistentProperty((mi, declared) => mi.GetCustomAttribute<IgnoreAttribute>() == null);
このように、マッピングコードで無視されるプロパティのリストを保持する必要はありません。
必要なプロパティをマップして、マップする必要のないプロパティを残してみませんか
これを確認してください
次のように、ConventionModelMapperの永続性を管理できます。
mapper.BeforeMapProperty += (mi, propertyPath, map) =>
{
// Your code here using mi, propertyPath, and map to decide if you want to skip the property .. can check for property name and entity name if you want to ignore it
};
より良い答えは次のようになります。
mapper.IsPersistentProperty((mi, declared) =>
{
if (mi.DeclaringType == typeof (YourType) && mi.Name == "PropertyNameToIgnore")
return false;
return true;
});
NHibernateマッピングで無視する必要のあるプロパティについて言及しない場合、NHibernateはそれを無視します。