現在、以下の単純モデルを使用しています。それはかなり簡単です:リソースがあり、Room
、EmptyOffice
(...)またはService
です。Entity Frameworkコア2.0を持つ複数の子エンティティの同じプロパティ名
Room
およびEmptyOffice
の容量は、Service
ではありません。
builder.Entity<Resource>(m =>
{
m.ToTable("resource", "facility");
m.HasKey(x => x.Id);
m.Property(x => x.Id)
.HasColumnName("ResourceId");
m.Property(x => x.Type)
.HasColumnName("ResourceTypeId");
m.HasDiscriminator(x => x.Type)
.HasValue<Room>(ResourceType.Room)
.HasValue<EmptyOffice>(ResourceType.EmptyOffice)
.HasValue<Service>(ResourceType.Service);
});
builder.Entity<Room>();
builder.Entity<EmptyOffice>();
builder.Entity<Service>();
私は私のコードを実行し、EFコアは、次の例外がスローされます:
public abstract class Resource : Entity
{
public string Name { get; set; }
}
public class Room : Resource
{
public int Capacity { get; set; }
}
public class EmptyOffice : Resource
{
public int Capacity { get; set; }
}
public class Service : Resource
{ }
は私のSQLビューからデータを取得するには、私はマッピングを使用
System.Data .SqlClient.SqlException: '無効な列名' Room_Capacity '。'
Capacity
プロパティの名前をRoom_Capacity
に変更しても機能しますが、恐ろしいことです。
どのようにしてEF Core 2.0が自分の子エンティティのそれぞれの容量プロパティを対象にすることができますか?
はあなたがEFコアで利用可能な唯一の継承パターンとしてクラス階層ごとのテーブルであることを行うことができないあなたに セバスチャン
EFコア2.0の移行を使用してデータベースを作成しましたか? – Smit
Nope。私は既存のDBを使用しています。 – Seb
データベース内のテーブル構造の詳細を共有できますか?ここでの問題は、EFが既存のデータベースと一致しない特定のデータベース構造を作成することです。データベースモデルを共有すると、不足している部分が見つかります。 – Smit