Пользовательский InserAllOnSubmit в Entity Framework - PullRequest
2 голосов
/ 29 июля 2011

Я только что перешел с L2S на EF 4. В L2S я интенсивно использовал метод InsertAllOnSubmit для datacontext, но в 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));
        }

Я хочу знать, каковы подводные камни использования этого метода.Я могу догадаться, что с CreateObjectSet<T>() связан какой-то актерский состав.Но я понятия не имею, сколько стоит затрат на создание набора объектов, и я хочу знать, какие другие негативные последствия будет иметь этот метод
спасибо

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Не уверен, почему вы пытаетесь переписать платформу сущностей, это уже поддерживается, это делается другим способом в ef.в ef вы можете просто добавить объекты в коллекцию записей и вызвать SaveChanges (), фреймворк сохранит все изменения, включая изменения, вставки и удаления, когда это вызывается

2 голосов
/ 31 июля 2011

Когда дело доходит до таких вопросов о производительности, единственный способ определить стоимость - сделать тест.Я могу ошибаться, но могу поспорить, что вызов Linq to Sql InsertAllOnSubmit делает то же самое, что и вы, в цикле foreach, добавляя каждую сущность по одному.Единственный способ понять это - использовать что-то вроде рефлектора, чтобы изучить код .net framework.

Единственный реальный способ определить стоимость данного фрагмента кода - это выполнить некоторые действия.тесты.Если вас беспокоит стоимость db.CreateObjectSet, попробуйте создать другой метод, который использует фактический EF DataContext, и выполните оба стресс-теста.Это позволит вам узнать, насколько дорогой ваш метод выше.

...