链接是一个标识符的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");
答案 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"运行任务,你会得到不可预测的错误。