2016-10-06 4 views
0

私は2つのテーブルcarownerを持っています。 Car表はFKとしてOwnerIdを使用します。EF linq、Idに関連するオーナーIDをすべて削除

を削除するには、OwnerIdに関連する車を削除する必要があります。

Carテーブルから関連するすべての行をポイントし、それらをすべて削除するにはどうすればよいですか?私の知る限りでは、最初の行でエラーが出ます:

(それは多くの関係への一つだ、多くの車が同じOwnerIdを持つことができます)

Car car = db.Cars.Where(c => c.OwnerId == id); //this gives me error: 
db.Cars.Remove(car); 
db.SaveChanges(); 

Owner owner = db.Owners.Find(id); 
db.Owners.Remove(owner); 
db.SaveChanges(); 

エラーは言う:cannot convert from System.Linq.IQueryable<X.Models.Car> to <X.Models.Car>。特定のIdに関連するすべての車を削除するにはどうすればよいですか?

+0

ルックどこ表現の戻り値の型ですべての車を得ます。それは車と同じですか?いいえ。代わりにvar car = db.Cars.Where(x => c.OwnerId == id)を使用してください。 –

+0

カスケード削除していませんか? –

答えて

2

のために、以下の

Car car = db.Cars.Where(c => c.OwnerId == id).FirstOrDefault();//this gives me error: 

使用あなたは、必要がある最初の

List<Car> list = db.Cars.Where(c => c.OwnerId == id).ToList(); 

//Delete all cars 
foreach(Car car in list){ 
    db.Cars.Remove(car); 
    db.SaveChanges(); 
} 

Owner owner = db.Owners.Find(id); 
db.Owners.Remove(owner); 
db.SaveChanges(); 
2

結果車のリスト。

1つの結果のみが必要な場合は、次のように使用します。複数

var cars = db.Cars.Where(c => c.OwnerId == id).ToList();//this gives me error: 
+0

もう1つの結果のための代替ソリューションをありがとう:) – Nyprez

関連する問題