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 中没有允许在单个方法调用中添加整个实体列表的批量插入功能。您必须遍历这些项目并一一添加。

作为旁注:我只会使用普通foreach循环而不是那种奇怪的Select技巧(它滥用了该Select方法,但它会起作用)。或者 - 如果curcRatesList是类型List<T>- 您可以使用Foreach方法List<T>代替Select

于 2012-12-31T14:41:56.980 回答