Хранимые процедуры в рамках сущности - PullRequest
6 голосов
/ 02 октября 2009

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

Я добавил функцию (правый клик -> добавить -> импорт функции), которая работает ТОЛЬКО, когда возвращаемое значение установлено на одну из сущностей. Когда я изменяю тип возвращаемого значения на Int32, Bool или ничего или любое другое значение, кроме сущности, функция (метод) просто исчезает, как только я нажимаю кнопку сборки.

Любые предложения о том, как я могу это отсортировать?

Ответы [ 3 ]

7 голосов
/ 02 октября 2009

Пока вы не можете - вы должны использовать одну из сущностей, определенных в вашей модели (хотя я думал, что базовые скалярные типы, такие как INT, тоже должны работать).

С EF4 все должно стать намного лучше - он должен выйти в конце 2009 или в начале 2010 года.

См. Эти статьи для получения дополнительной информации об этих новых функциях:

Если ваш хранимый процесс предназначен исключительно для ведения журнала, я, вероятно, просто выделю его вне контекста Entity Framework и просто вызову хранимую процедуру старым добрым способом ADO.NET .... зачем даже пытаться поместить все это контекст EF? Вы не извлекаете, не манипулируете и не храните данные с помощью этой службы ведения журналов - просто сделайте это статическим методом для статического класса - сделайте это простым!

Марк

5 голосов
/ 02 октября 2009

Это один из способов выполнения хранимой процедуры из среды enitity:

            using (SEntities se = new SEntities())
            {
                EntityConnection entityConnection = (EntityConnection)se.Connection;
                DbConnection storeConnection = entityConnection.StoreConnection;

                storeConnection.Open();

                DbCommand command = storeConnection.CreateCommand();
                command.CommandText = "NameOfStoredProcedure";
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.Add(new SqlParameter("param1", value_of_param1));
                command.Parameters.Add(new SqlParameter("param2", value_of_param2));

                SqlParameter param3 = new SqlParameter();
                pA.SqlDbType = SqlDbType.Bit;
                pA.ParameterName = "@param3";
                pA.Direction = ParameterDirection.Output;
                command.Parameters.Add(param3);

                command.ExecuteNonQuery();

                returnValue = Convert.ToBoolean(param3.Value);
            }
1 голос
/ 21 июня 2013

С EF 4.1 это возможно. До Ef 4.0 это невозможно. Вы можете использовать следующие строки для вызова sp в ef 4.1

res = ctx.Database.SqlQuery<MyResultType1>(...your SP call...);

Для получения дополнительной информации, пожалуйста, обратитесь к Обработка хранимой процедуры в Entity Framework

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