我有一个型号,' 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;
}
}
}
非常感谢任何帮助。