Я пытаюсь переназначить столбец descriminator моего TPH-сохранялось иерархии объектов, как описано в:Ошибка Переотображение EF Code First Тф Дискриминатор
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
When Я использую один из следующих вариантов:
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));
или
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));
со следующими изменениями:
- Использование строки, а не целым числом, например «1» Заявление Карта
- Удалить для MyBase
Я получаю ошибку:
Map was called more than once for type 'DerivedA' and at least one of the calls didn't specify the target table name.
Все производные классы наследуют непосредственно из MyBase, и все производные классы включены в отображении.
Я использую Entity Framework 4.3.1.
Что я делаю неправильно?
Хороший звонок! Спасибо за обходной путь! – Scott