2016-04-27 1 views
0

У меня есть Бен просил, чтобы создать приложение, которое использует существующую БД с помощью хранимых процедур (insert, update, delete), и они не хотят использовать Entity Framework.C# Data Access Layer (не EF, но SP и объекты)

Один из способов создать свой собственный данных уровня доступа с помощью System.Data.DataSet, но я хотел бы знать, если есть какие-либо существующие библиотеки или что-то я могу использовать, где я могу заполнить объекты SP-х, а также обновить данные с помощью SP-х.

Любые подсказки?

+0

Проверить [Dapper.NET] (https://github.com/StackExchange/dapper-dot-net#stored-procedures) –

+1

Да, платформа Entity Framework. Вы можете использовать хранимые процедуры с EF. Обычно, хотя разработчикам дается задание, но не сказано, что они не могут использовать специальные инструменты, которые хорошо поддаются работе. Почему требование не использовать EF? – Igor

+0

Производительность в EF ужасна с большими наборами данных. – VAAA

ответ

0

Вы можете использовать микро-орм как Dapper, который прост, эффективен и правильно отображает объекты.

Пример использования:

// Call spGetUser with a parameter Id and put the result in a User instance. 
var user = cnn.Query<User>("spGetUser", new {Id = 1}, 
     commandType: CommandType.StoredProcedure).SingleOrDefault(); 
+0

Может ли Dapper отслеживать изменения над сущностью? Значит, я могу знать, какое свойство было изменено и т. Д.? – VAAA

+0

@VAAA Для этого вы можете использовать [Dapper.Contrib] (https://github.com/StackExchange/dapper-dot-net/tree/master/Dapper.Contrib). – Spilarix

+0

Удивительный! thats what Im looking – VAAA

0

Если вы действительно хотите идти по этому пути, вы можете использовать Automapper

Взгляните на этот пост How do I use automapper to map a dataset with multiple tables

Тем не менее, имейте в виду, что производительность может быть на самом деле очень плохо.

ИМХО, EF - лучший выбор.

0

Я обычно рекомендую использовать щеголеватый. он очень легкий, его производительность наравне с кодировкой ADO.NET.

+0

Может ли Dapper отслеживать изменения над сущностью? Значит, я могу знать, какое свойство было изменено и т. Д.? – VAAA

+0

Нет, это просто прямые запросы и операции выполнения, расширяющие объект соединения. –