2015-07-10 44 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下拉菜单

编辑

我把外键数据注释放在了错误的属性中......我的不好。

相关问题