.NET删除条目前删除Icollection中的项目

时间:2018-03-01 22:30:35

标签: c# asp.net .net

链接是一个标识符的icollection我想删除一个标识符,但首先我必须删除链接中的条目但是我收到此错误:

  

System.Data.SqlClient.SqlException:不允许新事务,因为会话中还有其他线程在运行。

我不确定如何解决这个问题?

    public ActionResult DeleteConfirmed(int id)
    {
        var userId = User.Identity.GetUserId();
        var UserTableID = db.UserTables.Where(c => c.ApplicationUserId == userId).First().ID;
        Identifier identifier = db.Identifiers.Find(id);
        if (identifier.UserTableID == UserTableID)
        {
            foreach (var item in db.Links.Where(c => c.IdentifierID == identifier.ID))
            {
                db.Links.Remove(item);
                db.SaveChanges();
            }
            db.Identifiers.Remove(identifier);
            db.SaveChanges();
            return RedirectToAction("Index");

2 个答案:

答案 0 :(得分:0)

这可能是由.ToList()循环引起的,因为您在尝试保存数据时同时主动从数据库中提取数据。尝试在foreach循环中添加foreach (var item in (db.Links.Where(c => c.IdentifierID == identifier.ID)).ToList()) { db.Links.Remove(item); db.SaveChanges(); }

apply plugin: 'com.google.gms.google-services'

答案 1 :(得分:0)

首先,你的foreach没有ToList,查询没有被执行。

并且,从您的代码,变量" db"必须是单身, web是多线程应用程序, 而两个线程使用" db"运行任务,你会得到不可预测的错误。