Общий класс или методы для использования с Linq to SQL с хранимой процедурой? - PullRequest
2 голосов
/ 18 июня 2011

Я новичок в Linq и ранее использовал классы Ado.net.

Я хочу использовать Linq-to-SQL с хранимыми процедурами.Можете ли вы поделиться кодом (или ссылкой на код) универсального класса для вызова различных хранимых процедур.Я не хочу создавать отдельные классы / методы DAL для каждой сущности базы данных.

Спасибо

Ответы [ 2 ]

0 голосов
/ 18 июня 2011

В случае генериков вы, вероятно, будете ограничены базовыми операциями CRUD. В этом случае вы сможете использовать таблицу :

        DataContext ctx;
        var table = ctx.GetTable<Foo>();
        table.InsertOnSubmit(newObject);
        table.DeleteOnSubmit(oldObject);

(и обновление должно работать для объектов, которые были изменены, используя SPROC, который вы указали для обновлений).

SubmitChanges будет затем использовать правильные sprocs автоматически (вы можете указать SPROC для вставки, обновления и удаления в конструкторе или DBML. Хитрый бит - это get . Это не раскрывается непосредственно на ctx ... Единственное предложение, которое у меня есть, это шаблон на основе имени для контекста данных и отражения? Так, может быть, GetFoo метод для получения Foo.

Другой подход, конечно, заключается в реализации нескольких универсальных интерфейсов, т.е.

partial class MyDataContext : IFetch<Foo>, IFetch<Bar>
{
     Foo IFetch<Foo> Get(int key) { .. call get method on ctx ..}
     Bar IFetch<Bar> Get(int key) { .. call get method on ctx ..}
}
interface IFetch<T>
{
     T Get(int key);
}

(который расширяет контекст данных)

Тогда вы можете привести контекст данных:

var fetch = ctx as IFetch<T>();
return fetch.Get(key);
0 голосов
/ 18 июня 2011

Если вы пытаетесь использовать такие хранимые процедуры для CRUD целей, вы можете, в файле edmx (тот, который содержит сущности БД), щелкнуть правой кнопкой мыши класс, который вы хотели бы выполнитьдействие и выберите Stored Procedure Mapping.Там вы найдете список действий, которые вы можете выполнить над таким объектом.

PS: вы также должны импортировать хранимые процедуры из БД при создании моделей.

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