В Entity Framework введен метод AddRange. Это отлично подходит для больших вставок, потому что метод DbSet.Add всегда вызывает DetectChanges, что крайне замедляет процесс. Я просто хотел использовать какой-то существующий код на основе интерфейса IDbSet, когда понял, что у него нет метода AddRange. Он существует только в классе DbSet.
Я немного искал Google и нашел это обсуждение - http://forums.asp.net/t/1978828.aspx?Why+is+there+no+AddRange+method+for+System+Data+Entity+IDbSet+T+ - но нет четкого вывода о том, почему метод AddRange не существует в интерфейсе IDbSet.
Является ли это ошибкой или есть какая-то веская причина, чтобы она не была там? Любые идеи?
UPDATE
Здесь https://entityframework.codeplex.com/workitem/2781 Microsoft дала мне ответ:
Это по дизайну. Интерфейсный подход не был хорошим для DbSet, потому что добавление элементов разбивает любые существующие приложения, реализующие интерфейс.
Учитывая, что мы хотим иметь возможность добавлять членов в DbSet, мы поменялись на подход базового класса, где DbSet - это базовый класс, который вы можете напрямую издеваться или наследовать.
Вот несколько ссылок, которые показывают, как использовать DbSet, а не IDbSet: