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

Azure Mobile Service Table Controller and EntityState.Modified

我正在使用 Azure 移动服务 TableController。 我在 entity framework 中遇到外键关系问题。我有两个 tables:Persons 和 Countries。 Persons 有一个指向 CountryId 的外键列。

保存时,entity framework 在国家 table 中创建了一个新行,其名称与国家 [0] 相同,但 ID 增加了。这显然不是期望的结果——这个人应该将其 Country_CountryId 字段设置为国家 [0] 的 ID,并且不应创建新行。

我该如何解决这个问题?

我正在使用 table 控制器

    // 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();
}

保存该对象时,您应该从数据库中获取国家/地区并将其用于人员对象,例如:

  • 从数据库中获取国家"contryIdX"

  • 设置person.ContryId="contryIdX"

  • 然后保存到数据库