一個保存()函數插入/更新我有一個街道表,其中有作爲的PK,是郵遞區號和streetcode兩個String列的組合。EF4.1的DbContext:在沒有身份PK
隨着EF4.1和的DbContext,我想編寫一個「保存」方法比採用一條街(即將在未附着狀態),檢查是否已經存在於數據庫中。如果這樣做,問題的最新情況,如果沒有,它會發出一個INSERT。
僅供參考,可以節省這些街道的應用,從文本文件閱讀他們,拯救他們(有沒有幾萬在該文件中,這些「streetlines」的)。
我想出現在是:
public void Save(Street street)
{
var existingStreet = (
from s in streetContext.Streets
where s.PostalCode.Equals(street.PostalCode)
&& s.StreetCode.Equals(street.StreetCode)
select s
).FirstOrDefault();
if (existingStreet != null)
this.streetContext.Entry(street).State = System.Data.EntityState.Modified;
else
this.streetContext.Entry(street).State = System.Data.EntityState.Added;
this.streetContext.SaveChanges();
}
這是很好的做法?這裏的表現如何?因爲每一條街道都會首先進行數據庫往返查看它是否存在。
嘗試插入街道(state = added)並捕獲任何PK違規行爲會不會更好?在catch塊,然後我可以改變狀態,以修改和()再次調用的SaveChanges。或者這不是一個好的做法?
有什麼建議?
感謝
謝謝,但不是真正的選擇,我認爲一次加載20K街道實體,性能明智 – tjeuten