Ich versuche, die descriminator Spalte meiner TPH-beharrte Objekthierarchie neu zuordnen wie bei beschrieben:Fehler Remapping EF-Code Erste TPH Diskriminatorfilter
http://msdn.microsoft.com/en-us/library/hh295845(v=vs.103).aspx
http://blogs.msdn.com/b/adonet/archive/2010/12/14/ef-feature-ctp5-fluent-api-samples.aspx
https://stackoverflow.com/a/6650064/141172
Wenn Ich kartiere mit einer der folgenden Varianten:
modelBuilder.Entity<MyBase>()
.Map<MyBase>(m => m.Requires("TypeId").HasValue(0))
.Map<DerivedA>(m => m.Requires("TypeId").HasValue(1))
.Map<DerivedB>(m => m.Requires("TypeId").HasValue(2))
.Map<DerivedC>(m => m.Requires("TypeId").HasValue(3))
.Map<DerivedD>(m => m.Requires("TypeId").HasValue(4));
oder
modelBuilder.Entity<MyBase>()
.Map<MyBase>(m => m.Requires("TypeId").HasValue(0));
modelBuilder.Entity<MyBase>()
.Map<DerivedA>(m => m.Requires("TypeId").HasValue(1));
modelBuilder.Entity<MyBase>()
.Map<DerivedB>(m => m.Requires("TypeId").HasValue(2));
modelBuilder.Entity<MyBase>()
.Map<DerivedC>(m => m.Requires("TypeId").HasValue(3));
modelBuilder.Entity<MyBase>()
.Map<DerivedD>(m => m.Requires("TypeId").HasValue(4));
mit den folgenden Variationen:
- Verwenden Zeichenfolge anstatt ganze Zahl, z.B. "1"
- Remove Map-Anweisung für MyBase
bekomme ich den Fehler:
Map was called more than once for type 'DerivedA' and at least one of the calls didn't specify the target table name.
Alle abgeleiteten Klassen erben direkt von MyBase und alle abgeleiteten Klassen sind in der Abbildung enthalten.
Ich benutze Entity Framework 4.3.1.
Was mache ich falsch?
Guter Anruf! Danke für die Problemumgehung! – Scott