2010-01-09 85 views

回答

0

这是非常容易的:

public class IgnoreAttributeConvention : AttributePropertyConvention<IgnoreAttribute> 
{ 
    protected override void Apply(IgnoreAttribute attribute, IPropertyInstance instance) 
    { 
     instance.ReadOnly(); 
    } 
} 

其中IgnoreAttribute是一个简单/空属性。

0

instance.ReadOnly()方法告诉FNH不要查找数据库中属性的更改。要完全忽略该属性,您需要调用instance.Access.None()。

3

我试图用其中的两个建议,甚至都没有和创造一个惯例似乎与功能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(); 
    } 
} 

后来我发现这虽然旧的规定,你不能忽视这个群体谷歌讨论具有约定的属性,必须通过覆盖类映射来完成,如果使用自动映射。

https://groups.google.com/forum/?fromgroups#!topic/fluent-nhibernate/PDOBNzdJcc4

这就是老了,不知道它是否仍然是相关的,但是这是我的经验。我希望这样可以节省别人试图使用这个解决方案的麻烦,或者刺激别人指出我可能会出错的地方。

+0

你有没有想过如何忽略使用Fluent和Automapping的POCO上特定属性的映射?甚至现在找到这方面的信息也很困难。 – adaam 2016-06-14 08:53:09