Я не согласен с обоими существующими ответами здесь. Petapoco великолепен, но я думаю, что EF все еще предлагает ряд преимуществ.
Petapoco прекрасно работает (возможно, даже лучше, чем EF) для выполнения простых хранимых процедур, которые читают один объект или список объектов. Однако, как только вы прочитали данные и должны начать их изменять, я чувствую, что именно здесь EF является явным победителем.
Чтобы вставить / обновить данные с помощью petapoco, вам нужно вручную вызвать хранимую процедуру вставки / обновления, используя:
db.Execute("EXEC spName @param1 = 1, @param2 = 2")
Построение вручную вызова хранимой процедуры и объявление всех параметров очень быстро устаревают, когда хранимые процедуры вставки / обновления вставляют строки с несколькими столбцами. Это становится еще хуже при вызове обновленных хранимых процедур, которые реализуют оптимистический параллелизм (т.е. передача исходных значений в качестве параметров).
Вы также рискуете сделать опечатку в встроенном вызове хранимой процедуры, который, скорее всего, не будет перехвачен до времени выполнения.
Теперь сравните это с каркасом сущности: в EF я просто отобразил бы свою хранимую процедуру на мою сущность в edmx. Существует меньше риска опечатки, так как инструменты структуры сущностей будут автоматически генерировать отображение, анализируя мою хранимую процедуру.
Структура сущностей также будет обрабатывать оптимистичный параллелизм без каких-либо проблем. Наконец, когда приходит время сохранить мои изменения, единственный шаг - это позвонить:
entities.SaveChanges()