Asp.net 实体框架中的自定义InserAllOnSubmit

Asp.net 实体框架中的自定义InserAllOnSubmit,asp.net,asp.net-mvc,entity-framework,entity-framework-4,Asp.net,Asp.net Mvc,Entity Framework,Entity Framework 4,我刚从L2S换到EF4。在L2S中,我大量使用datacontext的InsertAllOnSubmit方法,但在EF中,似乎没有这样的方法可用。我已经在ObjectContext上编写了这个通用扩展方法 public static void InsertAllOnSubmit<T>(this ObjectContext db, List<T> newentities) where T:EntityObject { var obje

我刚从L2S换到EF4。在L2S中,我大量使用datacontext的InsertAllOnSubmit方法,但在EF中,似乎没有这样的方法可用。我已经在ObjectContext上编写了这个通用扩展方法

public static void InsertAllOnSubmit<T>(this ObjectContext db, List<T> newentities) where T:EntityObject
        {
            var objectSet = db.CreateObjectSet<T>();
            newentities.ForEach(x => objectset.AddObject(x));
        }
public static void InsertAllOnSubmit(此ObjectContext数据库,列出新实体),其中T:EntityObject
{
var objectSet=db.CreateObjectSet();
ForEach(x=>objectset.AddObject(x));
}
我想知道使用这种方法的陷阱是什么。我能猜到的一点是,有一些强制转换与
CreateObjectSet()
相关。但是,我不知道创建objectset会产生多少成本,而且我想知道这种方法还会有什么不良影响

谢谢

对于这样的性能问题,要真正确定成本,唯一的方法就是进行测试。我可能错了,但我打赌Linq to Sql调用InsertAllOnSubmit做的事情与您做的foreach循环一样,一次添加一个实体。唯一的方法是打开类似reflector的东西来查看.net框架的代码


确定给定代码成本的唯一真正方法是进行一些测试。如果您担心db.CreateObjectSet的成本,请尝试创建另一个利用实际EF DataContext的方法,并通过一些压力测试运行这两个方法。这将让您知道上述方法的成本有多高。

不确定您为什么要尝试重写实体框架这已经得到了支持,它在ef中以不同的方式完成。在ef中,您只需将对象添加到记录集合中并调用SaveChanges(),框架将保存任何更改,包括编辑、插入和删除(当调用时)

我在问题中解释说,我刚刚从L2S迁移到ef,在L2S中,我使用InsertAllOnSubmit、DeleteAllOnsubmit等。我也想在ef中使用相同的方法。我提出了一个可行的方法,希望了解这种方法的缺陷。一个缺陷会使代码更难读取/维护,而且由于逻辑的重复,可能会增加性能的损失