在提供程序连接上启动事务时发生错误.有关详细信息,请参阅内部异常

Gol*_*lda 5 c# linq entity-framework

这是我的编码.它显示错误,如在提供程序连接上启动事务时发生错误.有关详细信息,请参阅内部异常

       DemoEntities db = DemoEntities.CreateNewDemoEntity();
       var query = (from f in db.Product_Table
                    where f.ReportID == reportID && f.StateID == stateID
                    select f);
       foreach(var q in query)
       {
           Custom_Search_Transformation cst = new Custom_Search_Transformation()
           {
               CustomerID = customerID,
               StateID = stateID,
               FullProductID = q.FullProductID
           };
           db.Custom_Search_Transformation.AddObject(cst);
           db.SaveChanges();
       }
Run Code Online (Sandbox Code Playgroud)

Gol*_*lda 11

db.SaveChanges();应该来的外foreach循环:

DemoEntities db = DemoEntities.CreateNewDemoEntity();
var query = (from f in db.Product_Table
             where f.ReportID == reportID && f.StateID == stateID
             select f);
foreach(var q in query)
{
    Custom_Search_Transformation cst = new Custom_Search_Transformation()
    {
        CustomerID = customerID,
        StateID = stateID,
        FullProductID = q.FullProductID
    };
    db.Custom_Search_Transformation.AddObject(cst);          
}
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)


zaz*_*aza 10

将您的可查询列表设为.ToList()它应该可以正常工作.

  • 有时您必须在每个循环结束时将数据保存到数据库中。如果是这种情况,正如这个答案所解释的那样,“query.ToList 中的 var q”解决了这个问题。 (2认同)