2012-12-31 66 views
3

我是EF新手。我从数据库创建实体模型。将对象列表添加到实体数据库中

我有表CurrencyMaster([FromCurrency],[ToCurrency],[ActiveStatus])和CurrencyConversion([ID],[FromCurrency],[ToCurrency],[日期],[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; 
} 

我怎么可以这样做以适当的方式?
有什么办法可以做到这一点没有循环curcRatesList

我正在使用.NET 3.5,并不确定EF版本..我没有尝试执行代码(我需要一些其他设置),但我确信我所做的是不正确的。所以我在这里发帖..

+0

你能提供一个你想要在这个方法中做什么的概述吗?或者应该做什么?我不能完全遵循逻辑。 – Kami

+0

@Kami:编辑我的问题 – dotNETbeginner

回答

1

该程序是正确的。 EF中没有批量插入功能,可以在单个方法调用中添加整个实体列表。您必须遍历项目并逐个添加它们。作为一个方面说明:我只是使用一个普通的foreach循环,而不是那个奇怪的Select技巧(它错误地使用Select方法,但它会工作)。或者 - 如果curcRatesList的类型是List<T> - 您可以使用Foreach方法List<T>而不是Select

+0

'列表 .Foreach'是一个不错的选择.. – dotNETbeginner