[英]How can I delete rows from tables using EF when inside an Asp.Net method?
我有这种方法:
[Route("Delete")]
public IHttpActionResult Delete()
{
}
我想做的是从这里的三个表中删除:
public System.Data.Entity.DbSet<SampleSentence> SampleSentences { get; set; }
public System.Data.Entity.DbSet<Synonym> Synonyms { get; set; }
public System.Data.Entity.DbSet<WordForm> WordForms { get; set; }
我可以使用EF6中的删除功能删除所有行,还是应该以某种方式进行SQL调用?
假设您有一个DbContext派生类...
using (var transactionScope = new TransactionScope()) {
try {
string sql = @"
DELETE SampleSentence
DELETE Synonym
DELETE WordForm
";
int count = myDbContext.Database.ExecuteSqlCommand(sql);
if(count > 0)
transactionScope.Complete();
} catch(Exception ex) {
//Logging
}
}
您可以使用这个EntityFramework.Extended库 ,借助它可以编写:
context.SampleSentences.Delete();
context.Synonyms.Delete();
context.WordForms.Delete();
我刚发现在stackoverflow
db.ProRel.RemoveRange(db.ProRel.Where(c => c.ProjectId == Project_id));
如何使用Entity Framework ASP.Net MVC 5删除多个记录?
但是我用这种方法删除一行
var Cert = (from cert in db.TblCompCertUploads where cert.CertID == ID select cert).FirstOrDefault();
if (Cert != null)
{
db.TblCompCertUploads.DeleteObject(Cert);
db.SaveChanges();
ViewBag.Msg = "Deleted Successfully";
}
对于多行
List<tbl_CompCertificate> tbp = db.tbl_CompCertificate.Where(t => t.CompCer_CompId == CompId).ToList();
foreach (tbl_CompCertificate t in tbp)
{
db.tbl_CompCertificate.DeleteObject(t);
db.SaveChanges();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.