2014-12-19 115 views
0

我在我的项目中首先使用实体​​框架代码。我有两个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并抛出一个异常表示主键不能更改。

回答

2

调用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(); 
+0

谢谢你,它可以工作! – 2014-12-19 04:42:52