Azure移动服务表控制器和EntityState.Modified

时间:2015-02-09 14:04:23

标签: azure-mobile-services

我使用的是Azure Mobile Service TableController。 我在实体框架中遇到外键关系问题。我有两个表:人员和国家。人员拥有CountryId的外键列。

在保存时,实体框架在Countries表中创建一个与countries [0]同名的新行,但是是一个新的递增ID。这显然不是理想的结果 - 该人员应将其Country_CountryId字段设置为国家/地区[0]的ID,并且不应创建新行。

我该如何解决这个问题?

我正在使用表格控制器

    // POST tables/Booking
    public async Task<IHttpActionResult> PostPerson(Personitem)
    {
        Person current = await InsertAsync(item);
        return CreatedAtRoute("Tables", new { id = current.Id }, current);
    }

我知道如何在api控制器中设置EntitySate

using (var dt = new DatabaseContext()) { 
    dt.Entities.Add(person);
    dt.Entry(person.Country).State = EntityState.Modified;
    dt.SaveChanges();
}

1 个答案:

答案 0 :(得分:0)

当你保存那个对象时,你应该从数据库中获取国家并在person对象中使用它,例如:

  • 从数据库“contryIdX”

  • 获取国家/地区
  • 设置person.ContryId =“contryIdX”

  • 然后将其保存在数据库中