1

空のデータベースがあります。データベースにマルチレコードを追加したい。データベースにレコードを挿入しているときに、同じ日付に挿入された製品が再度追加されないかどうかを確認したい(ファイルされているものを変更して内容を更新したい)。このコードを使用しましたが、データベースにデータを追加するだけです(既存の製品をチェックできません)。

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.

助けてください。

4

1 に答える 1

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();
            }
         }
于 2012-08-07T08:38:45.463 に答える