0

WCF Rest サービスを使用しています。「_altProductVersionEntityRepository」というリポジトリから複数のレコードを削除しようとしています 以下は私のコード全体です

 public Result UpdateProductObject(ProductObjectToSave prodSave)
    {

        IUnitOfWork unitOfWork = new UnitOfWork((IObjectContext)_objectSetFactory);

        var versions = prodSave.VersionDetails;
        var altVersions = prodSave.AlternateVersionDetails;



        foreach (var versionDetail in versions)
        {
            var detail = versionDetail;

            var dbVersionentity = _productVersionEntityRepository.FirstOrDefault(x => x.Id == detail.Id);


            var altVersionEntity = _altProductVersionEntityRepository.FirstOrDefault(x => x.ProductVersionEntityId == detail.Id);

            if (dbVersionentity == null)
            {
                dbVersionentity = new ProductVersionEntity();
                _productVersionEntityRepository.Insert(dbVersionentity);
                dbVersionentity.Id = GetNextTableId("vProductVersion");
                dbVersionentity.CreatedOn = DateTime.Now;


            }


            dbVersionentity.Name = detail.Name;
            dbVersionentity.Code = detail.Code;


            if (detail.Id > 0){

            _productVersionEntityRepository.Update(dbVersionentity);
                if (altVersionEntity != null){
                    _altProductVersionEntityRepository.Delete(altVersionEntity);
                }
            }



        }


        try
        {
            unitOfWork.Commit();
        }
        catch (Exception e)
        {

            return new Result() { Status= e.Message };
        }

        return new Result() { Status= = "Record updated successfully" };

    }

変数「altVersionEntity」で、「_altProductVersionEntityRepository」リポジトリから最初のレコードを見つけようとします。このリポジトリには複数のレコードがありますが、ここで FirstOrDefault を実行しているため、単一のレコードのみが削除されます。すべてのレコードを削除する方法は何ですか。レコードが見つかった場合にのみレコードを削除したいので、FirstOrDefault を使用しています。そうしないと、エラーがスローされます。複数のレコードを削除する方法は何ですか? 私はまだWCFに慣れていないので、助けてください。

4

1 に答える 1

0

私は自分の解決策を見つけました。上記のコードで使用していた FirstOrDefault の代わりに find メソッドを使用します。以下のようなfindメソッドを使用します

 var altVersionEntity =
                _altProductVersionEntityRepository.Find(x => x.ProductVersionEntityId == detail.Id);

次に、変数altVersionEntityを使用してリストに変換し、それをループして、以下のように「altProductVersionEntityRepository」リポジトリからレコードを1つずつ削除します

var tempList = altVersionEntity.ToList();
                    for (i = 0; i <tempList.Count ; i++)
                    {
                        _altProductVersionEntityRepository.Delete(tempList[i]);
                    }
于 2013-01-07T14:42:48.217 に答える