Nat*_*Pet 10 linq entity-framework dbset
我有以下内容,并寻找一种更有效的方法来删除vs循环记录,然后一次删除每一个(注意使用Dbset):
var wcd = dbContext.ProgramDetails.Where(p => p.Id == Id);
foreach (var wc in wcd.ToList())
{
dbContext.ProgramDetails.Remove(wc);
}
dbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
还要说如果我们有1条记录如下:
var pg = dbContext.Program.Where(p => p.Id == Id && Name == FName);
Run Code Online (Sandbox Code Playgroud)
删除这条记录的最佳方法是什么?
尝试了以下但是给出了一个错误:
var pg = dbContext.Program.Where(p => p.Id == Id && Name == FName);
dbContext.Program.Remove(wc);
Run Code Online (Sandbox Code Playgroud)
然后我使用foreach来删除一条记录,如上所示,这对于1条记录来说效率不高.
vit*_*ore 10
EF7更新:
using (var db = new BloggingContext())
{
var blog = db.Blogs.First(p => p.Id == Id);
db.Remove(blog);
db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
2015年5月更新:检查msdn和示例上的更新文档.使用EF6删除实体的示例代码:
public async Task<ActionResult> Delete(Department department)
{
try
{
db.Entry(department).State = EntityState.Deleted;
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
catch (DbUpdateConcurrencyException)
{
return RedirectToAction("Delete", new { concurrencyError = true, id = department.DepartmentID });
}
catch (DataException /* dex */)
{
//Log the error (uncomment dex variable name after DataException and add a line here to write a log.
ModelState.AddModelError(string.Empty, "Unable to delete. Try again, and if the problem persists contact your system administrator.");
return View(department);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您知道ID并且没有加载实体,最有效的方法是创建假实体并将其删除
var p = new Program { Id = myId }
dbContext.Program.Remove(p)
Run Code Online (Sandbox Code Playgroud)
但是如果你真的有几个具有相同id的记录并且你需要使用name
字段来选择正确的记录,这将不起作用.
你最后一个例子应该是
var pg = dbContext.Program.First(p => p.Id == Id && p.Name == FName);
dbContext.Program.Remove(pg);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9661 次 |
最近记录: |