最後一個弱我有一個我嘗試重新創建的錯誤。一塊現有的代碼在數據庫上進行了批量插入。但是,數據庫中的值不允許重複。舊代碼在每次使用SaveChanges添加AddObject後都將更改保留到數據庫中。這表現不佳。因此,不是每次我在每1000條記錄後保存它(並在交易中完成此操作,但與此示例無關),而不是保存它。AddObject之後的實體框架查詢
下面的這段代碼給出了我做了什麼的概述。
TestEntities test = new TestEntities();
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
string q = j.ToString();
if (!test.warehouses.Any(x => x.combi == q))
{
warehouse wh = new warehouse();
wh.combi = j.ToString();
wh.ean = j.ToString();
test.warehouses.AddObject(wh);
}
}
}
test.SaveChanges();
我不知道那是什麼讓任何疑問給出了數據庫沒有結果的實體框架只查詢數據庫中的數據,而不是待處理的數據(和我是假設會有一個結果。 )因此,這會在上面的代碼中導致不需要的重複。
現在我解決了它,以便儘快存儲要添加到內存中的對象,然後將它們存儲在數據庫中。這會起作用,但會在代碼中產生很多開銷。有沒有辦法解決這個問題?你能告訴EF來處理數據庫和待處理的更改嗎?所有的ORM都是這樣工作的嗎?
感謝, 帕特里克
我試過本地,但它說它不知道本地。 (首先與設計師一起使用數據庫) – Patrick
@Patrick我首先使用代碼,但是如果Local無法識別[link](http://msdn.microsoft.com/en-us/library/gg679246(v = vs.103))。 aspx),那麼ObjectStateManager可以幫助:[link](http://stackoverflow.com/a/6400097/551322) – nrodic
在項目中,我們有一個codefirst項目,在那裏我們有Local屬性。謝謝。 – Patrick