2015-07-10 48 views
-1

比方說,我有這兩個作爲例子:在MVC中,如何更新與另一個表/模型相關的列數據?

public class Cat 
{ 
    public int Id { get; set; } 
    public string Name { get; set } 
    public CatColor Color { get; set; } // I'd like to change this value 
} 

public class CatColor 
{ 
    public int Id { get; set; } 
    public string Color { get; set } 
} 

我有對貓值,ID(自動生成),名稱,顏色提示的形式。我沒有更新/創建名稱的問題,但Color值完全不會改變。

在數據庫中,CatColor可以分配給許多貓。這應該是一個簡單的任務,但我現在一直在盯着它。

在我的控制器我有這樣的事情:

public ActionResult SaveCat(Cat objCat) 
    { 
     Cat oc = db.Cat.Include(d => d.CatColor).ToList().SingleOrDefault(m => m.Id == objCat.Id); 
     oc.Name = objCat.Name; 
     // oc.CatColor.Color = objCat.Color ??? 
     ... 
     db.SaveChanges(); 
     return .. 
    } 

只是想知道我怎麼能做到這一點。

回答

0

你缺少的ForeignKey的數據註解

public class Cat 
{ 
    public int Id { get; set; } 
    public string Name { get; set } 
    public int ColorId { get; set; } 
    [ForeignKey("ColorId")] 
    public CatColor Color { get; set; } 
} 

,你可以做這樣的:

public ActionResult SaveCat(Cat objCat) 
{ 
     Cat oc = db.Cat.Include(d => d.CatColor).ToList().SingleOrDefault(m => m.Id == objCat.Id); 
    oc.Name = objCat.Name; 
    oc.CatColor.ColorId = objCat.ColorId 
    ... 
    db.SaveChanges(); 
    return .. 
} 

注:objCat.ColorId可如果你的觀點,你有一個可以很容易地填充用所有可能的CatColors下拉菜單

編輯

我把外鍵數據註釋放在了錯誤的屬性中......我的不好。

相關問題