我在NHibernate中使用代码映射。 我找了一个有几个属性的课。其中一个与DB中的任何列无关,但仍然具有getter和setter。
我使用ConventionModelMapper而不是ModelMapper。第一个假定所有属性都已映射。
我如何告诉NHibernate忽略它?
答案 0 :(得分:5)
我发现创建属性更容易,将该属性附加到属性,并在mapper.IsPersistentProperty方法中检查它。像这样:
class IngnoreAttribute : Attribute
{
}
class Foo
{
[Ignore]
public virtual string Bar { get; set; }
}
mapper.IsPersistentProperty((mi, declared) => mi.GetCustomAttribute<IgnoreAttribute>() == null);
这样,我不必在映射代码中保留要忽略的属性列表。
答案 1 :(得分:3)
为什么不映射您想要的属性并留下不需要映射的属性
检查this
您可以按照以下方式管理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;
});
答案 2 :(得分:0)
如果你没有提到NHibernate映射中应该忽略的属性,NHibernate会忽略它。