如何在nhibernate中按属性忽略属性
如何通过使用属性装饰属性来忽略属性?基类如何在nhibernate中按属性忽略属性,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,如何通过使用属性装饰属性来忽略属性?基类AttributePropertyConvention似乎没有这种能力,或者可以吗?在IPropertyInstance上找不到任何可设置的内容 这很容易: public class IgnoreAttributeConvention : AttributePropertyConvention<IgnoreAttribute> { protected override void Apply(IgnoreAttribute attribu
AttributePropertyConvention
似乎没有这种能力,或者可以吗?在IPropertyInstance
上找不到任何可设置的内容 这很容易:
public class IgnoreAttributeConvention : AttributePropertyConvention<IgnoreAttribute>
{
protected override void Apply(IgnoreAttribute attribute, IPropertyInstance instance)
{
instance.ReadOnly();
}
}
公共类IgnoreAttributeConvention:AttributePropertyConvention
{
受保护的替代无效应用(IgnoreAttribute属性,IPropertyInstance实例)
{
ReadOnly();
}
}
其中IgnoreAttribute是简单/空属性 instance.ReadOnly()方法告诉FNH不要在数据库中查找属性的更改。要完全忽略该属性,您需要调用instance.Access.None()。我尝试使用这两种建议中的任何一种创建约定,甚至两种建议都不起作用,而且似乎都不适用于fluent nhibernate 1.3.0.727
public class IgnoreAttributeConvention : AttributePropertyConvention<IgnoreAttribute>
{
protected override void Apply(IgnoreAttribute attribute, IPropertyInstance instance)
{
instance.ReadOnly();
}
}
public class IgnoreAttributeConvention : AttributePropertyConvention<IgnoreAttribute>
{
protected override void Apply(IgnoreAttribute attribute, IPropertyInstance instance)
{
instance.Access.None();
}
}
public class IgnoreAttributeConvention : AttributePropertyConvention<IgnoreAttribute>
{
protected override void Apply(IgnoreAttribute attribute, IPropertyInstance instance)
{
instance.Access.None();
instance.ReadOnly();
}
}
公共类IgnoreAttributeConvention:AttributePropertyConvention
{
受保护的替代无效应用(IgnoreAttribute属性,IPropertyInstance实例)
{
ReadOnly();
}
}
公共类IgnoreAttributeConvention:AttributePropertyConvention
{
受保护的替代无效应用(IgnoreAttribute属性,IPropertyInstance实例)
{
Access.None();
}
}
公共类IgnoreAttributeConvention:AttributePropertyConvention
{
受保护的替代无效应用(IgnoreAttribute属性,IPropertyInstance实例)
{
Access.None();
ReadOnly();
}
}
我后来发现了这个google groups讨论,虽然以前的讨论指出不能使用约定忽略属性,但如果使用自动映射,则必须重写类映射
这已经很老了,我不知道它是否仍然相关,但这是我的经验。我希望这可以避免其他人尝试使用此解决方案时遇到的麻烦,或者促使其他人指出我可能出错的地方。以下代码将阻止在数据库中生成列
public class MyEntity
{
[NotMapped]
public bool A => true;
}
public class AutomappingConfiguration : DefaultAutomappingConfiguration
{
public override bool ShouldMap(Member member)
{
if (member.MemberInfo.GetCustomAttributes(typeof(NotMappedAttribute), true).Length > 0)
{
return false;
}
return base.ShouldMap(member);
}
}
你有没有想过如何只使用Fluent和Automapping忽略POCO上特定属性的映射?即使现在也很难找到这方面的信息。