【发布时间】:2012-03-28 21:01:08
【问题描述】:
我正在尝试重新映射我的 TPH 持久对象层次结构的描述符列,如下所述:
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
当我使用以下任一变体进行映射时:
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 语句
我得到错误:
Map 被多次调用,类型为“DerivedA”,并且至少有一个 调用没有指定目标表名。
所有派生类都直接继承自MyBase,并且所有派生类都包含在映射中。
我正在使用实体框架 4.3.1。
我做错了什么?
【问题讨论】:
标签: ef-code-first entity-framework-4.3