-1

Я ищу хороший пример проектов для использования шаблона репозитория и хранимой процедуры. Я провел много раз, я не могу найти хороший пример, который использует sp для связи с шаблоном репозитория и db. Даже обычный CRUD, я все равно буду использовать SP.Образец хранилища и хранимая процедура

Также есть ли у кого-нибудь пример выполнения сложных данных в хранимой процедуре для кода в EF?
Например, хранимая процедура возвращает несколько таблиц данных? Благодаря

+0

На компьютере Google есть множество примеров, демонстрирующих шаблон хранилища. Кроме того, вы задаете второй вопрос, который не совсем ясен ...что вы подразумеваете под * делать сложные данные в хранимой процедуре для кода в EF * – IAbstract

+0

Я не могу найти хороший пример, который использует sp для обмена сообщениями с шаблоном репозитория. Даже обычный CRUD, я все равно буду использовать SP. –

ответ

3

я не могу найти хороший пример, который используют для зр commmunicate с шаблон репозитория. Даже обычный CRUD, я все равно буду использовать SP.

Подумайте только об pattern и ваших вариантах - вы можете использовать только SP и вы хотите, чтобы объект отвечал за доступ к данным. Вам не нужен какой-либо примерный проект - вам просто нужно подумать.

При реализации хранилища с хранимыми процедурами вы закончите с простым DAO (объект доступа к данным), определенный интерфейс, как:

public interface IEntityDao 
{ 
    IEnumerable<Entity> GetAll(); 
    Entity GetByKey(int key); 
    bool Insert(Entity data); 
    bool Update(Entity data); 
    bool Delete(int key); 
} 

Это основной интерфейс для CRUD операций на Entity сохранялся класс. Каждая реализация метода вызывает единую хранимую процедуру для выполнения операции. Если вам понадобится любая другая операция (например, некоторая фильтрация или упорядочение), вы создадите новую хранимую процедуру и выведете новую операцию, вызывающую эту хранимую процедуру.

Может быть обсуждение, если это или нет репозитория, но просто SP не предложит вам ничего более. Например, эта часть определения в основном невозможно достичь на родовом уровне:

Client объекты построения спецификации запроса декларативно и представить их в репозитарий для удовлетворения.

Ваша «спецификация запроса» всегда будет только параметрами, специфичными для данной хранимой процедуры и переданной вашей открытой операции. Вы не сможете декларативно определить весь запрос (если вы не передадите SQL в качестве параметра для своего SP).

Вы можете вызвать хранимые процедуры непосредственно ADO.NET или использовать либо импорт функций, либо ExecuteStoreQuery/ExecuteStoreCommand в EF. EF может выполнять сложные хранимые процедуры с такими ограничениями:

  • хранимая процедура возвращает только один результирующий набор. Для нескольких наборов результатов вам потребуется либо EFExtensions, либо вам придется ждать .NET 4.5, где должна быть включена эта функция.
  • хранимая процедура не должна возвращать другой набор результатов - это означает, что структура набора результатов должна быть одинаковой для каждого Выполнение SP (нет опорных точек или динамического SQL, возвращающего различное количество столбцов)

Импорт функций имеет несколько меньших ограничений. Если вы будете следовать этим правилам, вы сможете создавать классы/сложные типы для каждого набора результатов, возвращаемого вашим SP.

+0

Хорошо, это означает, что я не должен использовать репозиторий в соответствии с вашими рекомендациями. Не так ли? Я так запутался и как использовать EF для сопоставления сущностей. Вот почему я действительно хочу пример. –

+0

Я этого не говорил. Если вам нужно использовать SP, вы всегда закончите что-то вроде этого. –

+0

Я отредактировал свой предыдущий ответ. Потому что способ, которым вы описываете, - это просто ADO.Net, который является моим текущим проектом с CRUD. –

Смежные вопросы