2015-02-09 52 views
0

我正在使用Azure移動服務TableController。 我在實體框架中遇到外鍵關係問題。我有兩個表格:人員和國家。人員對CountryId有一個外鍵列。Azure移動服務表控制器和EntityState.Modified

保存時,實體框架會在國家/地區表中創建一個與國家/地區[0]同名的新行,但會增加一個新的ID。這顯然不是理想的結果 - 人應該將其Country_CountryId字段設置爲國家/地區ID [0],並且不應創建新行。

我該如何解決這個問題?

我使用表控制器

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

回答

0

當您保存對象,你應該從數據庫中獲取的國家,並在使用它人物,如:

  • 從數據庫中獲取國家「contryIdX」

  • 集person.ContryId = 「contryIdX」

  • 然後將其保存在數據庫

+0

是的,你是對的。我應該只傳遞CountryId而不是Country對象。 – 2015-02-09 18:53:00