9
的的DbContext的SaveChanges令我有了與序號列在表中唯一索引的表。因此,例如,該表將具有以下欄目:語句執行
TABLEID,ID1,ID2,有序
唯一索引是跨列ID1,ID2,有序。
我的問題是,從數據庫中刪除記錄時,我再重新排序的序,使他們再次順序。我的刪除功能是這樣的:
public void Delete(int id)
{
var tableObject = Context.TableObject.Find(id);
Context.TableObject.Remove(tableObject);
ResequenceOrdinalsAfterDelete(tableObject);
}
的問題是,當我叫Context.SaveChanges()它打破了唯一索引,因爲它似乎比他們通過以不同的順序來執行的語句。例如,發生以下情況:
- 重新排序的序數
- 刪除記錄
相反的:
- 刪除記錄
- 重新排序的序數
這是EF的正確行爲嗎?如果是這樣,是否有一種重寫這種行爲的方法來強制執行的順序?
如果我沒有解釋這個正確,請讓我知道...
嗨感謝您的答覆!我以前用數據庫實現了這一點,正如你所說的那樣。該代碼是可怕的,是一個痛苦,再加上這將只能從管理部分訪問,並會改變少量。對於正在重新排序的序的主要原因是管理用戶可以設置幾個表的順序,並得到挑剔或困惑時,他們看到差距......一個令人失望的是EF不提供你雖然順序執行的位。 – didiHamman