1

Я привык к EF, потому что он обычно работает нормально, пока вы узнаете его лучше, поэтому вы знаете, как оптимизировать свои запросы. Но.Какие библиотеки DAL поддерживают выполнение хранимых процедур и материализацию результатов

Что выберете, когда узнаете, что будете работать с большими объемами данных? Я знаю, что я бы не хотел использовать EF в первую очередь и калечить свое приложение. Я бы написал очень оптимизированные хранимые процедуры и вызвал их, чтобы получить очень узкие результаты (со многими объединениями, поэтому они, вероятно, не будут просто возвращать определенные сущности).

Итак, я немного смущен, какую технологию/библиотеку DAL я должен использовать? Я не хочу использовать способ SqlConnection/SqlCommand, так как мне придется писать гораздо больше кода, который, вероятно, скроет некоторые неясные ошибки.

Я хотел бы сделать поверхность ошибки как можно и использовать технологию, которая будет учитывать мой процесс не вице-а-Versa ...

Есть ли библиотека, которая дает мне возможность:

  • обеспечивают средства простого исполнения SP по имени
  • обеспечивает автоматическую материализацию возвращаемых данных, так что я мог бы просто обеспечить определенные materialisers с помощью функций лямбды?

как:

List<Person> result = Context.Execute("StoredProcName", record => new Person{ 
    Name = record.GetData<string>("PersonName"), 
    UserName = record.GetData<string>("UserName"), 
    Age = record.GetData<int>("Age"), 
    Gender = record.GetEnum<PersonGender>("Gender") 
    ... 
}); 

или даже вызова хранимой процедуры, которая возвращает несколько наборов результатов и т.д.

List<Question> result = Context.ExecuteMulti("SPMultipleResults", q => new Question { 
    Id = q.GetData<int>("QuestionID"), 
    Title = q.GetData<string>("Title"), 
    Content = q.GetData<string>("Content"), 
    Comments = new List<Comment>() 
}, c => new Comment { 
    Id = c.GetData<int>("CommentID"), 
    Content = c.GetData<string>("Content") 
}); 

В основном это последний не будет работать, так как это один не имеет любые знания, как связывать оба вместе ... но вы понимаете суть.

Итак, поставим все на один вопрос: Есть ли библиотека DAL, оптимизированная для выполнения хранимых процедур и материализации данных?

ответ

0

Business Layer Toolkit может быть именно то, что необходимо здесь. Это легкий инструмент ORM, который поддерживает множество сценариев, включая множество наборов результатов, хотя они кажутся очень сложными.