[英]Entity Framework How to update child table
我繼承了一些數據庫表和實體框架,其中有以下表:
Table Person
Id (Primary Key)
Sex
CarId (Foreign Key)
Table Car
Id (Primary Key)
Color
ManufacturerId (Foreign Key)
Table Manufacturer
Id (Primary Key)
Name
我正在使用實體框架工作將數據提取到POCO中(沒有問題)。 現在,我想更改一個人的汽車並保存回數據庫。 我現在很忙。 我有:
Car car= new Car { Color = "gray", Manufacturer = manufacturer};
_dbContext.Cars.Add(car);
_dbContext.SaveChanges();
person.Car = car;
_dbContext.Entry(person).State = EntityState.Modified;
_dbContext.SaveChanges();
沒有引發異常,新的Car出現在數據庫中,但人員行未更改為指向新的Car。 有人可以告訴我怎么回事以及我應該如何更新嗎? 我是實體框架的新手。
順便說一句,我嘗試了其他組合,例如嘗試
person.CarId = car.Id.
這導致一個異常:
發生參照完整性約束沖突:定義參照約束的屬性值在關系中的主體對象和從屬對象之間不一致。
我似乎找不到一個簡單的例子來解決問題。
_dbContext.Entry(person).State = EntityState.Modified; 這告訴實體框架整個記錄已更新。
因此,您可以嘗試以下方法:
Car car= new Car { Color = "gray", Manufacturer = manufacturer};
_dbContext.Cars.Add(car);
_dbContext.Person.Attach(person);
person.Car = car;
_dbContext.SaveChanges();
現在,實體框架應該跟蹤要更改的列。
或者您可以致電:
_dbContext.DetectChanges();
_dbContext.SaveChanges();
它也應該有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.