я не могу найти хороший пример, который используют для зр 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.
На компьютере Google есть множество примеров, демонстрирующих шаблон хранилища. Кроме того, вы задаете второй вопрос, который не совсем ясен ...что вы подразумеваете под * делать сложные данные в хранимой процедуре для кода в EF * – IAbstract
Я не могу найти хороший пример, который использует sp для обмена сообщениями с шаблоном репозитория. Даже обычный CRUD, я все равно буду использовать SP. –