2009-02-13 8 views
7

Im pomocą AutoPersistenceModel w Fluent NHibernate mapować wszystkie moje podmioty i że wszystko działa dobrze: DFluent NHibernate wiele do wielu Konwencji dla typu

Jednak kilka z moich przedmiotów mają

public virtual IList<Comment> Comments { get; set; } 

W baza danych znajduje się pojedyncza tabela komentarzy, a każda jednostka z powyższym kodem ma własną tabelę linków do komentarzy.

Obecnie co robię jest:

public class ContractMappingOverride : IAutoMappingOverride<Contract> 
{ 
    public void Override(AutoMap<Contract> mapping) 
    { 
     mapping.HasManyToMany(x => x.Comments) 
      .WithTableName("Comment_Contract"); 

dla każdego podmiotu.

Czy jest jakiś sposób, aby ustawić konwencję, w której wszystkie odwzorowania do IList <Komentarz> są automatycznie okablowane tak wiele razy z powyższą konwencją nazw tabel?

Dzięki

Andrew

Odpowiedz

5

wiem, że to nie to, co chcesz usłyszeć, ale odpowiedź brzmi: nie.

W bieżącym projekcie Fluent NHibernate, nie ma sposobu na stosowanie konwencji do kolekcji, mając jednocześnie wiedzę na temat typów, w których są używane, można zastosować coś do wszystkich kolekcji, nie zależnie od ich zawartego typu . To jest błąd w naszym projekcie i zamierzam to poprawić, ale jest to dość duża zmiana, więc nie nastąpi to z dnia na dzień.

Zalecam sprawdzenie za pomocą naszego mailing list, zazwyczaj publikujemy tam aktualizacje.

Przykro mi, ale nie mogę być bardziej pomocny.

+1

Wystarczająco fair, dziękuję za informację. Sprawdzę źródło i zobaczę, czy mogę złożyć poprawkę razem, bo naprawdę polubiłbym tę funkcjonalność. –

+0

Dodałem odpowiedź na to pytanie James, Byłoby wspaniale, gdybyś mógł dodać komentarz, jeśli moje założenia były poprawne lub gdybym był poza bazą. –

+1

Myślę, że bardzo przydatne byłoby posiadanie nietypowej wersji Override <>. W ten sposób byłoby względnie łatwo dokonać nadpisań opartych na konwencjach, używając odbicia, aby obrócić właściwości. –

0

Minęło trochę czasu, odkąd pracowałem z Fluent NHibernate i właśnie obecnie wracam do zamachu (wow było wiele zmian od początku 09!) I myślę, że odpowiedź na twoje pytanie jest teraz tak, możesz to zrobić za pomocą funkcji OverideAll.

Spójrz na Overrides na wiki FNH.

+0

Niestety, uważam, że OverrideAll można tylko (obecnie) używać do ignorowania właściwości dowolnego podmiotu, a nie tego, czego szuka Andrew. –