【发布时间】:2011-10-09 13:47:09
【问题描述】:
我正在针对现有数据库进行 EF Code First 开发。由于我收到了一个架构并且某些表名并不理想,因此我想以不同于基础表的方式命名某些实体类并在 OnModelCreating 中执行映射。
如果实体类名与现有表名冲突,这似乎不起作用,即使我在代码中重新映射它们。
给定这些(为本示例组成的)实体类:
- 小部件
- 小工具
我正在尝试在 OnModelCreating 中执行以下映射:
modelBuilder.Entity<Gadget>.ToTable("Sprocket");
modelBuilder.Entity<Widget>.ToTable("Gadget");
在运行时,这会产生以下错误:
System.InvalidOperationException : 实体类型 'Widget' 和 'Gadget' 不能共享表 “小工具”,因为它们不在同一类型层次结构中,或者它们之间没有有效的一对一外键关系和匹配的主键。
这没有意义,因为我正在将 Gadget 实体从 Gadget 表中映射出来,但即使我明确指定它,它似乎也会自动发生一些映射。
这种行为的解释是什么,可以解决吗?
【问题讨论】:
标签: c# entity-framework ef-code-first