如何使用实体框架替换外键实体
本文关键字:实体 替换 框架 何使用 | 更新日期: 2023-09-27 18:34:37
我首先在我的项目中使用实体框架代码。我有两个 entiy 有一个对多个的关系:
public class Car
{
public Guid ID { get; set; }
public string Make { get; set; }
public string Model { get; set; }
}
public class CarMapping
{
public Guid ID { get; set; }
public virtual Car Car { get; set; }
}
现在我得到了一个carID
,想在CarMapping中更换汽车。我尝试这样做:
var carMapping = DbContext.CarMappings.SingleOrDefault(m => m.ID == id);
carMapping.Car.ID = carID;
但这会导致EF更新Car并抛出异常,说主键无法更改。
调用carMapping.Car
属性将返回Car
对象。因此,您无法更改对象Car
主键。
如果你想在CarMapping中改变汽车,你应该做下一步:
Car car = DbContext.Cars.Single(r=>r.ID == carID);
CarMapping carMapping = DbContext.CarMappings.SingleOrDefault(m => m.ID == id);
carMapping.Car = car;
DbContext.SaveChanges();