Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вызов хранимой процедуры в Entity Framework / 6 сообщений из 6, страница 1 из 1
27.02.2009, 14:08
    #35842189
WStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимой процедуры в Entity Framework
Здравствуйте.

Есть таблица Persons c полями:
Код: plaintext
1.
2.
    PersonID int PK
    IsActive bit

И хранимая процедура:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE PROCEDURE dbo.Persons_MarkAsActive
	@PersonId int
AS
BEGIN
	UPDATE dbo.Persons SET IsActive =  1 
	WHERE PersonId = @PersonId;
END
GO

Проимпортировал эту хранимую процедуру в Function Imports в Entity Container.
В Function Imports ее видно.

Но вот вопрос - как ее запустить?

В контексте (dbEntities) ее нет...

Let the Force be with You...
...
Рейтинг: 0 / 0
27.02.2009, 16:32
    #35842789
WStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимой процедуры в Entity Framework
Сам спросил, и сам же отвечу.

Если кому то будет интересно.

Использование EF подразумевает работу приложения с бизнес объектами (иначе зачем тогда он EF нужен).

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

Делается то же самое путем простого изменения (что не есть хорошо):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
            
            Int32 personId = 1;  // нам, например, нужен первый человек

            // получаем наш бизнес объект
            Person person = context.Persons.Where("it.[PersonId] = @PersonId", new ObjectParameter("PersonId", personId)).First();

            // делаем его активным 
            person.IsActive = true;

            // сохраняем изменения в базу
            context.SaveChanges();

Либо выделения всего вышеперечисленного кода в метод класса Person, что намного лучше, чем писать код на формах:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    public partial class Person : System.Data.Objects.DataClasses.EntityObject
    {
        public static void MarkAsDelete(HostAdminEntities context, Int32 personId)
        {
            // здесь код показаный выше 
        }
    }

А вызвать это можно с формы вот так:
Код: plaintext
1.
2.
    Int32 personId = 1;
    Person.MarkAsDelete(myDataContext, personId);

Как по мне - то это более понятное решение, чем вызов хранимой процедуры.

А вам так не кажется?

:о)

Let the Force be with You...
...
Рейтинг: 0 / 0
28.02.2009, 20:50
    #35844173
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимой процедуры в Entity Framework
WStealth
Как по мне - то это более понятное решение, чем вызов хранимой процедуры.
А вам так не кажется?

А если нужно проапдейтить 10 млн записей? тоже будем их по одному грузить, менять свойство и записывать изменение в БД?

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
02.03.2009, 13:51
    #35845945
OldWoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимой процедуры в Entity Framework
WStealthСам спросил, и сам же отвечу.

Если кому то будет интересно.

Использование EF подразумевает работу приложения с бизнес объектами (иначе зачем тогда он EF нужен).

Как по мне - то это более понятное решение, чем вызов хранимой процедуры.

А вам так не кажется?


В инете уже есть книжка Programming Entity Framework, 1st Edition
by Julia Lerman . Как её начать читать я писал. там всё написано!!!!
...
Рейтинг: 0 / 0
02.03.2009, 13:55
    #35845954
OldWoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимой процедуры в Entity Framework
Второе руководство
http://weblogs.asp.net/zeeshanhirani/
и наконец
ms-help://MS.MSDNQTR.v90.ru/wd_entityframework/html/175cf601-7163-42a3-a95b-064f2341e016.htm
Поддержка хранимых процедур (платформа Entity Framework)
...
Рейтинг: 0 / 0
02.03.2009, 14:23
    #35846062
OldWoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимой процедуры в Entity Framework
WStealthЗдравствуйте.

Есть таблица Persons c полями:
Код: plaintext
1.
2.
    PersonID int PK
    IsActive bit

И хранимая процедура:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE PROCEDURE dbo.Persons_MarkAsActive
	@PersonId int
AS
BEGIN
	UPDATE dbo.Persons SET IsActive =  1 
	WHERE PersonId = @PersonId;
END
GO

Проимпортировал эту хранимую процедуру в Function Imports в Entity Container.
В Function Imports ее видно.

Но вот вопрос - как ее запустить?

В контексте (dbEntities) ее нет...

Let the Force be with You...
Так как вы написали update то в map есть кнопочка maps entity to fucton если вы хотите связать действия на сущностью и занесение данных в базу через процедуры
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вызов хранимой процедуры в Entity Framework / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]