私は次のタイプを持っています:
public abstract class Vehicle {
public int Id { get; set; }
public double TopSpeed { get; set; }
}
public class Car : Vehicle {
public int Doors { get; set; }
}
public class Motorcycle : Vehicle {
public string Color { get; set; }
}
そして、コードファーストの DBContext があります。
public MyDbContext: DbContext {
public DbSet<Car> Cars { get; set; }
public DbSet<Motorcycle> Motorcycles { get; set; }
}
車やモトを直接クエリすると、これはうまく機能します...
var dbContext = new MyDbContext();
var cars = dbContext.Set<Car>().Where(x=> x.TopSpeed>10); // <-- THIS WORKS
しかし、自動車であろうとオートバイであろうと、すべての車両のリストが必要な場合は、次のようにします。
var dbContext = new MyDbContext();
var vehicles = dbContext.Set<Vehicle>().Where(x=> x.TopSpeed>10); // <-- THIS DOES NOT WORK
上記のコードを試すと、例外が発生します。
System.InvalidOperationException : エンティティ タイプ Vehicle は、現在のコンテキストのモデルの一部ではありません。
それは完全に理にかなっています... コンテキストに Vehicle を追加しませんでした。車とモトを追加しました。この時点で、どうすればよいかわかりません。コンテキストに Vehicle を追加しようとしましたが、car と moto のテーブルが 1 つの Vehicle テーブルに結合されました。私は間違いなく、車とバイク用に別のテーブルが必要です (そして、おそらく車両ベースのプロパティ用のテーブルも必要です)。これを行う最善の方法は何ですか?