私は奇妙な問題の魔女EF Core 1.1に直面しています。いくつかのエンティティをタグ付けできるアプリケーションを作成しようとしています。したがって、リレーションテーブルリスト用の抽象ジェネリッククラスを作成しました。問題は、EFがFK(Idプロパティが動作する汎用抽象クラス)をサポートしていないようです。Entity Frameworkコアをサポートしない一般的な抽象エンティティとMeny2Menyの関係?
public abstract class TaggedEntityBase<T> : EntityBase
{
public ICollection<T> EntityTags { get; set; }
public List<Tag> Tags { get { return EntityTags?.Select(x => x.Tag).ToList(); } }
}
public class AddressTag
{
public long TagId { get; set; }
public Tag Tag { get; set; }
public long EntityId { get; set; }
public Address Entity { get; set; }
}
public class Address : TaggedEntityBase<AddressTag>
{
public string Street { get; set; }
public string City { get; set; }
}
public class Tag : EntityBase
{
public string Name { get; set; }
public virtual ICollection<AddressTag> AddressTags { get; set; }
}
モデルBuilderマッピング:
public DbSet<Address> Addresses { get; set; }
public DbSet<AddressTag> AddressTag { get; set; }
public DbSet<Tag> Tags { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<AddressTag>()
.ToTable("AddressTag");
modelBuilder.Entity<AddressTag>()
.HasKey(t => new { t.EntityId, t.TagId });
modelBuilder.Entity<AddressTag>()
.HasOne(pt => pt.Entity)
.WithMany(p => p.EntityTags)
.HasForeignKey(p => p.EntityId);
modelBuilder.Entity<AddressTag>()
.HasOne(pt => pt.Tag)
.WithMany(p => p.AddressTags)
.HasForeignKey(p => p.TagId);
}
はEFがタグ
タイプの未処理の例外を取得しようとするエラーがあり「システム
はこちらモデルです.Data.SqlClient.SqlException 'Microsoft.EntityFrameworkCore.dllで発生しました。追加情報:無効な列名' AddressId '。
私はそのId規則を持っていません。
注:Address POCO内に明示的にpublic ICollection<AddressTag> EntityTags { get; set; }
を配置すると、EntityTags.Tagも含めて完全に動作します。 助けてくれてありがとう:
は似問題があった – miechooy
サンプルが不完全です。 'EntityBase'クラスがありません.' public Listタグ{get {return EntityTags?.Select(x => x.Tag).ToList();} }} 'はコンパイルされません(' T'の制約がありません)。再現性を持たせるために不足している部品でポストを更新できますか? –