2012-03-28 6 views
0

Wir verwenden Fluent NH mit konventionsbasierter Zuordnung. Ich habe folgendes:So ordnen Sie zwei Komponenten des gleichen Typs mit Fluent NHibernate AutoMap Konventionen zu

public class Foo() : Entity 
{ 
    public BarComponent PrimaryBar { get; set; } 
    public BarComponent SecondaryBar { get; set; } 
} 

public class BarComponent 
{ 
    public string Name { get; set; } 
} 

Ich habe es an dem Punkt, wo es die Foo-Tabelle mit einem einzigen Namen Feld erstellen wird. Ich habe die folgende Überschreibung versucht und es funktioniert nicht.

public class FooOverride : IAutoMappingOverride<Foo> 
    { 
     public void Override(AutoMapping<Foo> mapping) 
     { 
      mapping.Component(x => x.PrimaryBar).ColumnPrefix("primary"); 
      mapping.Component(x => x.SecondaryBar).ColumnPrefix("secondary"); 
     } 
    } 

Muss ich wirklich eine vollständige Override-Mapping machen oder kann, was ich hier gemacht habe irgendwie gemacht werden?

Antwort

0

Ich landete den Weg, den ich in der Frage beschrieben habe arbeiten. Es stellte sich heraus, dass dies ein Problem mit unserer AutoMappingConfiguration ist, die von DefaultAutomappingConfiguration erbt. Wir haben Komponenten nicht richtig identifiziert.

+0

Dies ist keine Antwort. Antwort sollte mehr Details enthalten. – dariol

0

Ich bin vor einigen Jahren dazu gekommen, als ich mit FNH angefangen habe. Es ist eines der wenigen Szenarien, in denen FNH Autoapping nicht "nur funktioniert".

Der Ansatz, der mir zu der Zeit vorgeschlagen wurde, den ich erfolgreich verwendet habe (mit Entitäten jedoch nicht Komponenten), ist leere Zwischenelemente zu erstellen und sie in der abgeleiteten Klasse zu referenzieren.

In Ihrem Fall könnten Sie zwei neue leere Klassen erstellen, die von BarComponent erben (z. B. PrimaryBarComponent und SecondaryBarComponent).

in Ihrer Foo Klasse Dann erklären sie als:

public PrimaryBarComponent PrimaryBar { get; set; } 
public SecondaryBarComponent SecondaryBar { get; set; } 

Dies ist eine kluge, meiner Meinung nach, aber es funktioniert gut mit Entitäten und Listen der Stellen, und erfordert keine Überschreibungen oder Konventionen .

Ich habe noch nie Komponenten mit FNH verwendet, also weiß ich nicht, ob ein ähnlicher Ansatz funktioniert, aber es könnte sich lohnen, sie zu untersuchen.

Verwandte Themen