假设我将这两个作为例子:
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 }
}
我有一个表单提示Cat值,Id(自动生成),名称,颜色。我没有更新/创建名称的问题,但颜色值根本没有变化。
在数据库中,可以将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 :(得分: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 ..
}
注意:如果在您的视图中有一个包含所有可能的CatColors的下拉列表,则可以非常轻松地填充objCat.ColorId
修改强>
我已将外键数据注释放在错误的属性中......我的错误。