【发布时间】:2014-07-16 07:21:39
【问题描述】:
我的数据库中有以下表,所有表都具有相同的表名但架构不同。
- dbo.版本
- bpm.版本
- wf.Version
- ...
所有 x.Versions 都有一个版本表的 FK。
我已经从中创建了 POCO 类(这给了我诸如 Version、Version1 之类的类...... - - 我已将 classNames 重命名为 Version 和 BPMVersion,......但映射仍然存在到右表。
这是我映射到 bpm.Versions 的 BPMVersion 映射示例
// Primary Key
this.HasKey(t => t.Id);
// Properties
// Table & Column Mappings
this.ToTable("Version", "bpm");
this.Property(t => t.Id).HasColumnName("Id");
this.Property(t => t.VersionId).HasColumnName("VersionId");
this.Property(t => t.BPMId).HasColumnName("BPMId");
// Relationships
this.HasRequired(t => t.BPM)
.WithMany(t => t.BPMVersions)
.HasForeignKey(d => d.BPMId);
this.HasRequired(t => t.Version)
.WithMany(t => t.BPMVersions)
.HasForeignKey(d => d.VersionId);
在创建迁移脚本时,我遇到了以下异常: 实体类型“BPMVersion”和“Version”不能共享表“Versions”,因为它们不在同一个类型层次结构中,或者它们之间没有有效的一对一外键关系和匹配的主键。
我在互联网上找到了以下博客,这表明 EF 存在同名但架构不同的表的问题(https://entityframework.codeplex.com/workitem/1641 和 http://geekswithblogs.net/tonyt/archive/2013/07/02/153327.aspx)
在不重命名表名的情况下有没有办法避免这个问题?
【问题讨论】:
-
也许你可以映射到视图...
标签: c# entity-framework ef-code-first database-schema database-migration