我没有EF保存更改的重载,也没有可用的acceptallchanges

时间:2011-12-07 00:57:55

标签: c#-4.0 entity-framework-4

我很困惑,我试图排队多次插入我有成千上万的添加,所以我只想真正做一次数据库。

我正在使用.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 ??

            }
        }

现在这真的是我的头脑,所以任何帮助都会非常感激。

感谢

1 个答案:

答案 0 :(得分:7)

因为您使用的是DbContext API,而这些方法来自ObjectContext API。简化了DbContext API =它仅用于简单的要求。如果您有更复杂的要求,则必须通过将DbContext转换为ObjectContext实例来使用ObjectContext API:

var objectContext = ((IObjectContextAdapter)myDbContext).ObjectContext;
相关问题