Игнорирование свойств в Fluent NHibernate с VB.Net (2.0) - PullRequest
0 голосов
/ 29 июля 2010

Поскольку информации о VB.Net и (свободно) NHibernate очень мало, я решил написать этот вопрос всем остальным разработчикам, которые ищут дополнительную информацию.

Одна из вещей, с которой мне пришлось бороться, это как игнорировать свойства в NHibernate.

Причина, по которой мне пришлось игнорировать свойства, заключалась в том, что мы использовали Webserivce, который не может сериализовать классы интерфейса (ILists). Которые часто используются с NHibernate.

Поэтому нам пришлось игнорировать некоторые свойства из NHibernate и позволить этим свойствам преобразовывать объекты IList в объекты List, которые можно использовать в Webservice.

Нам не удалось найти хорошего перевода из этого кода C # в VB.Net:

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

ИЛИ

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

И нашел другое решение для решения проблемы (см. Самодельный ответ)

1 Ответ

0 голосов
/ 29 июля 2010

Создать новый класс, который реализует 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)
...