mam następujące typy:Zapytania o typie bazowym w EF4 Kodeksu pierwszego
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; }
}
I mam kodu pierwszego DBContext:
public MyDbContext: DbContext {
public DbSet<Car> Cars { get; set; }
public DbSet<Motorcycle> Motorcycles { get; set; }
}
Działa to doskonale, jeśli zapytać o samochodzie lub bezpośrednio moto ...
var dbContext = new MyDbContext();
var cars = dbContext.Set<Car>().Where(x=> x.TopSpeed>10); // <-- THIS WORKS
Ale jeśli chcę listy wszystkich pojazdów, czy samochód lub moto, chciałbym to zrobić:
var dbContext = new MyDbContext();
var vehicles = dbContext.Set<Vehicle>().Where(x=> x.TopSpeed>10); // <-- THIS DOES NOT WORK
Gdy próbuję powyższy kod, otrzymuję wyjątek:
System.InvalidOperationException: rodzaj podmiotu pojazd nie jest częścią modelu dla bieżącego kontekstu.
To ma sens ... Nie dodawałem pojazdu do kontekstu. Dodałem samochód i moto. W tym momencie nie jestem pewien, co robić. Próbowałem dodać pojazd do mojego kontekstu, ale to połączyło tabele dla samochodu i moto w jeden stół pojazdu. Zdecydowanie chcę mieć osobny stolik na samochody i motory (a może także na stół dla właściwości bazowych pojazdu). Jaki jest najlepszy sposób na zrobienie tego?
EF nie jest moją rzeczą, ale czy można uzyskać zestaw za pośrednictwem interfejsu, jeśli doda się go do kontekstu, np. zmienić "Pojazd" na "IVehicle"? – Eli