2012-12-31 67 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