实体框架 - 不更新引用的模型

时间:2014-03-17 22:03:34

标签: entity-framework entity-model

我有一个型号,' Person',它引用了另一个型号,' Salutation'。

public class Person
{
    public int Id { get; set; }
    public Boolean Active { get; set; }
    // fk
    public virtual Salutation Salutation { get; set; }
    public virtual PersonName Name { get; set; }

}

public class Salutation
{
    public int Id { get; set; }
    public string Name { get; set; }
}

当我尝试更新“人物”时与不同的“致敬”#39;它没有更新。虽然如果我改变了“致敬”中的实际数据。它确实更新。这是我的控制器中的UPDATE代码,进入该函数的数据是正确的,但不能保存在数据库中。

例如,如果当前的Salutation有ID:1和姓名:" Mr"然后,如果我尝试传入一个不同的现有记录,其ID为:2,名称:" Mrs"它没有改变。但是,如果我传入ID:2和名称:" RandomAlienString"然后它会改变新模型并更新Salutation。

在控制器中 - UPDATE方法:

 public void PutPerson(int id, [FromBody]Person person)
    {
        if (!ModelState.IsValid)
        {
            throw new HttpResponseException(HttpStatusCode.BadRequest);
        }

        if (id != person.Id)
        {
            throw new HttpResponseException(HttpStatusCode.BadRequest);
        }

        db.Entry(person).State = EntityState.Modified;
        db.Entry(person.Name).State = EntityState.Modified;
        db.Entry(person.Salutation).State = EntityState.Modified;

        try
        {
            db.SaveChanges();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!PersonExists(id))
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            else
            {
                throw;
            }
        }
    }

非常感谢任何帮助。

0 个答案:

没有答案