【问题标题】:Same table name different schema相同的表名不同的架构
【发布时间】: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/1641http://geekswithblogs.net/tonyt/archive/2013/07/02/153327.aspx

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

【问题讨论】:

  • 也许你可以映射到视图...

标签: c# entity-framework ef-code-first database-schema database-migration


【解决方案1】:

这与 EF 映射表名的方式有关。看起来这是 EF 中的一个错误。从 EF 6.1 开始,遗憾的是它仍处于 Proposed 状态,优先级低。

详情见:http://entityframework.codeplex.com/workitem/1641

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

【讨论】:

  • 6.1.3有这个bug
  • 6.1.3 中的相同问题。刚遇到这个问题
猜你喜欢
  • 2010-12-13
  • 2015-02-20
  • 2019-07-05
  • 1970-01-01
  • 2019-09-18
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多