我是EF的新手。我从数据库创建了实体模型。
我有表CurrencyMaster
([ FromCurrency ],[ ToCurrency ],[ ActiveStatus ])和{{1} }([ ID ],[ FromCurrency ],[ ToCurrency ],[日期],[ CurrencyFactor ])
我正在为CurrencyConversion
记录进行循环,因此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;
}
的循环,我有什么方法可以做到这一点吗?
我正在使用.NET 3.5,并且不确定EF版本..我没有尝试执行代码(我需要其他一些设置),但我很确定我所做的是不正确的..所以我在这里发帖..
答案 0 :(得分:1)
程序是正确的。 EF中没有批量插入功能,允许在单个方法调用中添加整个实体列表。您必须循环遍历项目并逐个添加。
作为旁注:我只会使用普通的foreach
循环而不是那种奇怪的Select
技巧(它会误用Select
方法,但它会起作用)。或者 - 如果curcRatesList
的类型为List<T>
- 您可以使用Foreach
List<T>
方法代替Select
。