簡體   English   中英

查詢以包含掛起的插入

[英]Query to include pending inserts

如何編寫包含掛起插入的查詢以及數據庫中的記錄? 我正在使用EF 4.3 Code First。

防爆。

Foo = new Foo { Bar = 5 };
dbContext.Set<Foo>.Add(foo);

IEnumerable<Foo> foos = dbContext.Set<Foo>.Where(f => f.Bar == 5).ToList();

ActOnFoos(foos);

dbContext.SaveChanges();

我希望foos既包括數據庫中的記錄,也包括掛起插入的記錄。 我只獲取數據庫中的值。

在我的實際代碼中,我將在運行查詢之前插入/更新多個Foos。

編輯

我正在尋找與Find有類似行為的東西。 Find將首先檢查上下文,然后在沒有找到任何內容的情況下轉到數據庫。 我想結合上下文和數據庫的結果。

試試這個:

DbSet<Foo> set = dbContext.Set<Foo>();

Foo = new Foo { Bar = 5 };
set.Add(foo);

IEnumerable<Foo> foos = set.Local
                           .Where(f => f.Bar == 5)
                           .Union(set.Where(f => f.Bar == 5)
                                     .AsEnumerable());
ActOnFoos(foos);

dbContext.SaveChanges();

或者更改操作順序的更好選擇:

DbSet<Foo> set = dbContext.Set<Foo>();

var data = set.Where(f => f.Bar == 5).AsEnumerable());

Foo = new Foo { Bar = 5 };
set.Add(foo);

IEnumerable<Foo> foos = set.Local.Where(f => f.Bar == 5);

ActOnFoos(foos);

dbContext.SaveChanges();

我認為最好在事務中插入記錄,如果你決定不想插入它們就回滾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM