相同的表名不同的模式

本文关键字:模式 | 更新日期: 2023-09-27 18:05:16

我的数据库中有以下表,所有表名称相同,但模式不同。

  • dbo。版本
  • bpm。版本
  • wf。版本

所有的x.Version都有一个到Version表的FK。

我已经从它创建了POCO类(这给了我类,如Version, Version1, ....我已经将类名重命名为Version和BPMVersion, ....但是到正确表的映射仍然存在。

这是我映射到bpm的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)

在不重命名表名的情况下是否有办法避免这个问题?

相同的表名不同的模式

这与EF映射表名的方式有关。看起来这是EF的一个bug。在EF 6.1中,它仍然处于建议状态,优先级很低。

查看详细信息:http://entityframework.codeplex.com/workitem/1641

更新:上面提到的EF WorkItem 1641已在版本6.1.2中修复