gpt4 book ai didi

ef-code-first - 错误重新映射 EF 代码优先 TPH 鉴别器

转载 作者:行者123 更新时间:2023-12-01 10:06:30 25 4
gpt4 key购买 nike

我正在尝试重新映射我的 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 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。

我做错了什么?

最佳答案

这在 EF5-beta2 中已修复,链式 Map 调用应该可以在其中工作。

在 EF 4.3 中,您需要将每个 Map 调用拆分到 EntityTypeConfiguration 适用于它的实体类型

modelBuilder.Entity<MyBase>() 
.Map<MyBase>(m => m.Requires("TypeId").HasValue(0));
modelBuilder.Entity<DerivedA>()
.Map<DerivedA>(m => m.Requires("TypeId").HasValue(1));
modelBuilder.Entity<DerivedB>()
.Map<DerivedB>(m => m.Requires("TypeId").HasValue(2));
modelBuilder.Entity<DerivedC>()
.Map<DerivedC>(m => m.Requires("TypeId").HasValue(3));
modelBuilder.Entity<DerivedD>()
.Map<DerivedD>(m => m.Requires("TypeId").HasValue(4));

注意对 Entity<DerivedA> 的调用, Entity<DerivedB> , 等等而不是全部到 Entity<MyBase> .

关于ef-code-first - 错误重新映射 EF 代码优先 TPH 鉴别器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9915578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com