繁体   English   中英

在Asp.Net方法内部时,如何使用EF从表中删除行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM