3

私はEFが初めてです。データベースからエンティティ モデルを作成しました。

テーブルCurrencyMaster([ FromCurrency ],[ ToCurrency ],[ ActiveStatus ]) とCurrencyConversion([ ID ],[ FromCurrency ],[ ToCurrency ],[ Date ],[ CurrencyFactor ])があります

私はCurrencyMasterレコードをループしており、それに応じてオブジェクトDownloadCurrencyRatesを取得します。List<CurrencyRate>これらのオブジェクトをエンティティ データベースに追加したいだけです。

私はこのようなことを試しました

public DownloadStatus DownloadUpdateCurrency(DateTime toDate, DateTime fromDate)
{
    CurrencyEntities db = new CurrencyEntities();
    var curMasters = db.CurrencyMasters.Where(x => x.ActiveStatus == 0);
    foreach (var item in curMasters)
    {

        var curcRatesList = DownloadCurrencyRates(fromDate, toDate, 
                                          item.FromCurrency, item.ToCurrency);

        //I know this is a bad code
        curcRatesList.Select(x =>  
                              {   
                                  db.AddToCurrencyConversions(
                                     new CurrencyEntity.CurrencyConversion { 
                                        Date = x.date, 
                                        CurrencyFactor = x.value, 
                                        FromCurrency = item.FromCurrency, 
                                        ToCurrency = item.ToCurrency 
                                      }
                                  ); 
                                  return true; 
                              }); 
    }
    db.SaveChanges();
    return DownloadStatus.DownloadSuccess;
}

適切な方法で同じことを行うにはどうすればよいですか?
for をループせずにこれを行う方法はありますcurcRatesListか?

私は.NET 3.5を使用していますが、EFのバージョンについてはわかりません.コードを実行しようとはしませんでした(そのためには他のセットアップが必要です)が、私がやっていることは正しくないと確信しています..だから私はここに投稿..

4

1 に答える 1

1

手順は正しいです。EF には、1 回のメソッド呼び出しでエンティティのリスト全体を追加できる一括挿入機能はありません。項目をループして、1 つずつ追加する必要があります。

foreach補足として、その奇妙なトリックの代わりに通常のループを使用するだけですSelect(メソッドを誤用しSelectますが、機能します)。または -curcRatesListがタイプの場合 - の代わりにのメソッドをList<T>使用できます。ForeachList<T>Select

于 2012-12-31T14:41:56.980 に答える