私はNHibernateのは、不足しているクラスの不満点を除いて、同じ問題を抱えていました。
私はあなたのクラスからプロパティをマップする部分を削除するには、次の規則を使用できると信じて:
public class IgnorePropertiesClassMapConvention : IClassConvention
{
public bool Accept(IClassMap classMaps)
{
return true;
}
public void Apply(IClassMap classMap)
{
var partsToIgnore = classMap.Parts.OfType<IProperty>()
.Where(IgnoreProperty).ToList();
foreach (var part in partsToIgnore)
((IList<IMappingPart>)classMap.Parts).Remove(part);
}
private bool IgnoreProperty(IProperty property)
{
// Your logic would be here
}
}
私は削除するために必要なことだったので、私が使用したコードは、少し異なっていますManyToOneマッピング:
public class IgnorePartsBasedOnReturnTypeClassMapConvention : IClassConvention
{
public bool Accept(IClassMap classMaps)
{
return true;
}
public void Apply(IClassMap classMap)
{
var partsToIgnore = classMap.Parts.OfType<IManyToOnePart>()
.Where(IgnorePart).ToList();
foreach (var part in partsToIgnore)
((IList<IMappingPart>)classMap.Parts).Remove(part);
}
private bool IgnorePart(IManyToOnePart part)
{
return IgnoreProperty(part.Property);
}
private bool IgnoreProperty(PropertyInfo propertyInfo)
{
var ignoredNamespaces = new []{"namespacesToIgnore"};
return ignoredNamespaces.Any(namespc => propertyInfo.GetGetMethod().ReturnType.Namespace.StartsWith(namespc));
}
}
これを行うには、これが最善の方法であるかどうかは分かりません。 私の気持ちは、発見可能性の部分は、不要なプロパティのためにその部分を構築することさえできないという能力でオーバーライドされるべきですが、今のところこれはうまくいくようです。
類似している間、私は「100%ないメートルので、私は今朝、googleGroupウェブサイトで同様の質問をしました。これはJames Gregoryからの返信です。 WithSetup(c => c.IsBaseClass = type => type == typeof( MyBaseEntity)); x.Dirtyプロパティがその基本クラスに含まれていて、それを除外すると、ボード全体でそれを無視する必要があります。ここ は、リンクで、あなたはStackOverflowの http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/6a92d337ea54c30a?hl=en GL上の答えを更新するために戻ってくることができます! – 5x1llz