我很困惑,我试图排队多次插入我有成千上万的添加,所以我只想真正做一次数据库。
我正在使用.net 4和实体框架4,并且还添加了对system.data.objects的引用 但我仍然没有可用于SaveChanges的过载
这是我的代码:
using (TransactionScope scope = new TransactionScope())
{
using (myDbContext context = new myDbContext)
{
foreach (var p in model)
{
var tempProduct = new Products();
// set a loopable list of available products
IEnumerable<MerchantProductFeedMerchantProd> prod = p.prod;
foreach (var i in prod)
{
var prodText = i.text.FirstOrDefault();
var prodUri = i.uri.FirstOrDefault();
var prodPrice = i.price.FirstOrDefault();
FillTempProduct(feedId, i, tempProduct, supplierId, feedInfo, prodPrice, prodText,
prodUri);
context.Products.Add(tempProduct);
context.SaveChanges(false); // no overload
}
scope.Complete();
context.AcceptAllChanges(); //acceptallchanges not referenced ??
}
}
现在这真的是我的头脑,所以任何帮助都会非常感激。
感谢
答案 0 :(得分:7)
因为您使用的是DbContext API,而这些方法来自ObjectContext API。简化了DbContext API =它仅用于简单的要求。如果您有更复杂的要求,则必须通过将DbContext
转换为ObjectContext
实例来使用ObjectContext API:
var objectContext = ((IObjectContextAdapter)myDbContext).ObjectContext;