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"
然后保存到数据库
我正在使用 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"
然后保存到数据库