0

我有以下遗留表结构(为这篇文章简化) 在此处输入图像描述

以下是我配置实体的微弱尝试:

public class EntityConfiguration : EntityTypeConfiguration<Entity> {
public EntityConfiguration() {
  ToTable("Entity");
  HasKey(x => x.Id);
  Property(x => x.Id)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

  HasMany(x => x.TypeOneUpdateBlacklist)
    .WithMany()
    .Map(x => {
      x.ToTable("UpdateBlacklist");
      x.MapLeftKey("EntityId");
      x.MapRightKey("UpdateId");
    });

  HasMany(x => x.TypeTwoUpdateBlacklist)
    .WithMany()
    .Map(x => {
      x.ToTable("UpdateBlacklist");
      x.MapLeftKey("EntityId");
      x.MapRightKey("UpdateId");
    });
}

配置呈现此错误:

已经定义了具有模式 'dbo' 和表 'UpdateBlacklist' 的 EntitySet 'EntityBlacklistUpdate'。每个 EntitySet 必须引用一个唯一的模式和表。

有没有配置这个?提前致谢

4

1 回答 1

0

您应该能够使用基本类型创建多对多映射Update

public class EntityConfiguration : EntityTypeConfiguration<Entity> {
    public EntityConfiguration() {
    ToTable("Entity");
    HasKey(x => x.Id);
    Property(x => x.Id)
        .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

    HasMany(x => x.Updates)
        .WithMany()
        .Map(x => {
            x.ToTable("UpdateBlacklist");
            x.MapLeftKey("EntityId");
            x.MapRightKey("UpdateId");
    });
}

但是,它要求您的类Entity只有一个Updates基本类型的导航集合,而不是两个派生类型的两个导航集合。只有当数据库模式真的代表一个继承模型时才有可能,即给定的Update行可以一个相关的TypeOneUpdate TypeTwoUpdate一行,两者都不能。如果两者都可以,则不能将其与 TPT 映射,但必须创建一对一的关系。

于 2013-04-19T15:46:43.320 回答