使用VB.Net忽略Fluent NHibernate中的属性(2.0)

时间:2010-07-29 12:59:40

标签: vb.net nhibernate fluent-nhibernate convention

由于关于VB.Net和(流利)NHibernate的信息很少,我决定将这个问题写给所有其他发现自己寻找更多信息的开发人员。

我必须要解决的一件事是如何忽略NHibernate中的属性。

我必须忽略属性的原因是因为我们使用了Webserivce,它无法序列化接口类(IList)。 NHibernate使用了很多。

所以我们不得不忽略NHibernate的一些属性,让这些属性将IList对象转换为可以在Webservice中使用的List对象。

我们找不到从这个C#代码到VB.Net的任何好的翻译:

.Override<Shelf>(map =>  
{  
  map.IgnoreProperty(x => x.YourProperty);
});

OR

.OverrideAll(map =>  
{  
  map.IgnoreProperty("YourProperty");
});

找到了解决问题的不同解决方案(参见自制答案)

1 个答案:

答案 0 :(得分:0)

创建一个实现DefaultAutomappingConfiguration的新类

Imports FluentNHibernate.Automapping

Public Class AutomapperConvention
    Inherits DefaultAutomappingConfiguration

    Public Overrides Function ShouldMap(ByVal member As FluentNHibernate.Member) As Boolean
        'When the the mapper finds a List object it ignores the mapping you can make your own choices here'
        If (member.PropertyType.IsGenericType AndAlso Not (member.PropertyType.IsInterface)) Then
            Return False
        Else
            Return MyBase.ShouldMap(member)
        End If
    End Function

End Class

在此处添加AutomapperConvention:

'Custom automapping to make the automapper find the correct id's (entityname + "Id")
Dim mappingConfig As New AutomapperConvention()
Dim model As New FluentNHibernate.Automapping.AutoPersistenceModel(mappingConfig)