我想我已经阅读了有关此问题的所有文章和堆栈溢出问题,但无法找到解决方案。让我从我的模型开始
public class Entry
{
public Entry ()
{
DateEntered = DateTime.Now;
}
public int Id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string Email { get; set; }
public string Number { get; set; }
public string FbId { get; set; }
[ReadOnly(true)]
public DateTime DateEntered { get; set; }
public string AccessToken { get; set; }
//Relationsips
public Backgrounds Background { get; set; }
public Cars Car { get; set; }
}
public class Backgrounds
{
public int Id { get; set; }
public string Name { get; set; }
public string Filename { get; set; }
}
public class Cars
{
public int Id { get; set; }
public string Name { get; set; }
public string FileName { get; set; }
}
现在在我的控制器中,我正在更新条目。如下
// PUT /api/entries/5
public HttpResponseMessage Put(Entry entry)
{
if(ModelState.IsValid)
{
_db.Entries.Attach(entry);
_db.Entry(entry).State = EntityState.Modified;
_db.SaveChanges();
return new HttpResponseMessage(HttpStatusCode.NoContent);
}
throw new HttpResponseException(HttpStatusCode.BadRequest);
}
我的 Entry 模型得到正确更新,但如果 entry.Background.Name 发生更改,则不会将其保存到数据库中。我的控制器正在接受整个入口模型,包括它的关系 => 背景和汽车。但是,更改为关系的任何值都不会更新或反映。无需查询数据库然后更新的任何优雅的解决方案?我不想在更新之前进行任何额外的查询或查找。
谢谢
泰隆