Frage

Im Moment ist ich mein Projekt über den klassischen fließend nhibernate Stil manuell eine ClassMap für jede Domäne Entität definiert Umschalten auf mit dem Auto-Mapper die Zuordnungen für mich automatisch generieren. Aber ich mag die Klassen halten verwende ich schon im klassischen Stil zugeordnet habe, bis ich die automappings zwicken kann die alten klassischen Zuordnungen entsprechen.

Das einzige Problem ist, dass fließend nhibernate stürzt ab, wenn der Auto-Mapper eine Klasse trifft, die bereits in dem klassischen fließend nhibernate Stil zugeordnet wird.

Hier ist mein AutoPersistenceModel Setup-Code:

_autoPersistenceModel = AutoMap.AssemblyOf<DomainEntity>();
_autoPersistenceModel.AddMappingsFromAssembly(typeof (PlayerPersistenceMap).Assembly);

_autoPersistenceModel.Alterations(x =>
                    x.Add<AutoMappingAlteration>())
                .Setup(s =>
                {
                    s.FindIdentity = type => type.Name == "ID";

                    s.IsBaseType = type => (type == typeof(DomainEntity));
                })
                .Conventions
                    .AddFromAssemblyOf<IdentityColumnConvention>()
                    .UseOverridesFromAssemblyOf<PlayerMappingOverride>();

Kann mir jemand helfen hier?

Weitere Informationen:

Ich habe auch versucht, die Technik auf der fließend-nhibernate Wiki erwähnt hier . Ach ich bin noch immer die Fehlermeldung: Duplicate class/entity mapping

.
War es hilfreich?

Lösung

Die fließend Mappings und Auto-Mappings Beispiel gemischt im Wiki sollte funktionieren, wenn es doesn ‚t dann gibt es einen Fehler.

Als Behelfslösung, die Typen ausschließen, die manuell von Ihnen automappings kartiert wurde. Sie würden das tun, indem Sie die Where beschriebenen Methode, zeigen in den Wiki-Beispiele, etwa wie folgt:

AutoMap.AssemblyOf<DomainEntity>()
  .Where(type => type != typeof(OneOfYourManuallyMappedClasses));

Wenn Sie eine Menge fließend Zuordnungen haben, könnten Sie eine Sammlung erstellen, das Automapping-Setup sauber zu halten:

var mappedTypes = new[] { typeof(One), typeof(Two) };

AutoMap.AssemblyOf<DomainEntity>()
  .Where(type => !mappedTypes.Contains(type));

Auch dies sollte nicht notwendig sein, aber wenn Sie sicher sind, dass es nicht mit dem Wiki Beispiel arbeitet dann würde ich vorschlagen, ein Problem zu erhöhen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top