同时将多项插入和更新到数据库中

时间:2012-08-07 07:24:08

标签: c# winforms linq

我有一个空的数据库。 我想在数据库中添加多条记录。 在将记录插入数据库的同时,我想检查我的产品是否插入到相同的日期,不再添加它(我想更改它的一些文件并更新它的内容)。 我使用了这段代码,但它只是将一些数据添加到数据库中(它无法检查现有产品。)

var AllData = ClsDataBase.Database.InsertProductTbls;

 foreach(item in AllData)
        {
          //Update  
          if (Exist(datefa))
            {
            var query = ClsDataBase.Database.CustomerProductTbls.SingleOrDefault
                    (data => data.CustomerId == AllData .CustomerId );

                    int? LastProductTotal = query.CustomerProducTtotal;
                    query.CustomerProducTtotal = LastProductTotal + ClsInsertProduct._InsertProductNumber;

                }
                //Insert 
                else
                {
                    _CustomerProductTbl = new CustomerProductTbl();
                    _CustomerProductTbl.CustomerId = AllData ._CustomerId;
                    _CustomerProductTbl.CustomerProductDateFa = AllData.datefa
                    .
                    .
                    .
                    ClsDataBase.Database.AddToCustomerProductTbls(_CustomerProductTbl);
                }
            }
        }
        ClsDataBase.Database.SaveChanges();

如果我使用ClsDataBase.Database.SaveChanges();进行更新和插入部分,我将返回此错误:

An error occurred while starting a transaction on the provider connection. See the inner exception for details.

请帮忙。

1 个答案:

答案 0 :(得分:0)

我通过为每个重复循环打开数据库连接来获得解决方案:

foreach(item in AllData)
        {
           using (StorageEntities context = new StorageEntities())
           {
         //Update  
          if (Exist(datefa))
            {
            var query = ClsDataBase.Database.CustomerProductTbls.SingleOrDefault
                    (data => data.CustomerId == AllData .CustomerId );

                    int? LastProductTotal = query.CustomerProducTtotal;
                    query.CustomerProducTtotal = LastProductTotal + ClsInsertProduct._InsertProductNumber;

                }
                //Insert 
                else
                {
                    _CustomerProductTbl = new CustomerProductTbl();
                    _CustomerProductTbl.CustomerId = AllData ._CustomerId;
                    _CustomerProductTbl.CustomerProductDateFa = AllData.datefa;
                    ClsDataBase.Database.AddToCustomerProductTbls(_CustomerProductTbl);
                }
                ClsDataBase.Database.SaveChanges();
            }
         }