2014-12-19 128 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