相同的表名称不同的模式

msj*_*han 7 c# entity-framework database-migration database-schema ef-code-first

我的数据库中有以下表,所有表都具有相同的表名但不同的模式.

  • dbo.Versions
  • bpm.Versions
  • wf.Version
  • ...

所有x.Versions对Version表都有一个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);
Run Code Online (Sandbox Code Playgroud)

创建迁移脚本时,我遇到以下异常: 实体类型'BPMVersion'和'Version'不能共享表'Versions',因为它们不在同一类型层次结构中或者没有有效的一对一外键与它们之间匹配主键的关系.

我在互联网上发现了以下博客,它认为EF有同名但不同架构的表存在问题(https://entityframework.codeplex.com/workitem/1641http://geekswithblogs.net/tonyt/ archive/2013/07/02/153327.aspx)

反正有没有重命名表名来避免这个问题?

Ben*_*ley 4

这与 EF 映射表名称的方式有关。看起来这是 EF 中的一个错误。从 EF 6.1 开始,它仍然处于“建议”状态,优先级较低。

详细信息请参见:http://entityframework.codeplex.com/workitem/1641

更新:上述 EF WorkItem 1641 已在版本 6.1.2上修复