Mar*_*rko 6 c# select asynchronous entity-framework
我正在使用ASP.NET Core和Entity Framework.
首先,我选择一个员工,然后选择满足条件的所有员工(为了显示有效的工作):
var a = db.Employee.FirstOrDefault();
var b = db.Employee.Where(x => x.FirstName == "Jack");
Run Code Online (Sandbox Code Playgroud)
现在我尝试相同,但异步:
var c = await db.Employee.FirstOrDefaultAsync();
var d = await db.Employee.Where(x => x.FirstName == "Jack");
Run Code Online (Sandbox Code Playgroud)
但是,对于"WHERE",没有异步版本,第二行代码无法编译 - 我收到错误
...不包含GetAwaiter的定义......
如何执行SELECT与WHERE在这种情况下的条件?
好的,从答案中我看到ToListAsync()将解析"var d = ..."行.但是,这个问题有一个延续,我之前并不知道这很重要.在这种情况下,我只是试图选择一组将被删除的记录,我对访问数据不感兴趣,以便在代码中进一步操作它.所以我修改了所有4个代码版本,目的是同步或异步删除一个或多个记录.为什么只有最后一个需要ToListAsync(),实际上不会从数据库中检索记录?
var a = db.Employee.FirstOrDefault();
db.Employee.Remove(a);
// db.Employee.RemoveRange(a); <- this also works?
db.SaveChanges();
var b = db.Employee.Where(x => x.FirstName == "Jack");
db.Employee.RemoveRange(b);
db.SaveChanges();
var c = await db.Employee.FirstOrDefaultAsync();
db.Employee.Remove(c);
await db.SaveChangesAsync();
var d = await db.Employee.Where(x => x.FirstName == "Jack").ToListAsync();
db.Employee.RemoveRange(d);
await db.SaveChangesAsync();
Run Code Online (Sandbox Code Playgroud)
Sam*_*ath 18
你可以这样做.
如果您需要检索一个对象,那么:
var d = await db.Employee.FirstOrDefaultAsync(x => x.FirstName == "Jack");
Run Code Online (Sandbox Code Playgroud)
如果您需要检索列表,那么:
var d = await db.Employee.Where(x => x.FirstName == "Jack").ToListAsync();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10036 次 |
| 最近记录: |