powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вернуть ID из хранимой процедуры
8 сообщений из 8, страница 1 из 1
Вернуть ID из хранимой процедуры
    #37137382
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу экспериментальную программулину на C# с использованием ADO.NET + Entity Framework

Задача предельно проста, нужно с помощью хп вставить запись в таблицу и вернуть ID этой записи.

Делаю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ALTER PROCEDURE [dbo].[CreatePriceHead]
	-- Add the parameters for the stored procedure here
	@IDPrice as Integer
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	insert into dbo.PriceHead (IDPrice, GetTime)
	values(@IDPrice, GETDATE());
	
	return scope_identity();
END

на клиентской стороне добавил процедуру в Function Import, поставил тип возвращаемого значения Scalar : Int32

Код: plaintext
1.
2.
3.
4.
5.
using (Abr2Entities context = new Abr2Entities())
                {
                    
                    this._IDPriceHead = context.CreatePriceHead((Int32?)this._IDPrice).First<Int32?>().Value;
...

При выполнении вот этого кода получаю исключение лично меня не наводящая на мысль "где поискать причину Oo". Помогите пожалуйста, тема уже обгуглена, мсдн тоже перекопал на тему хп, решения найти пока не удалось.

Исключение:
...
Рейтинг: 0 / 0
Вернуть ID из хранимой процедуры
    #37137553
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну собственно проблему порешал вот как:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
ALTER PROCEDURE [dbo].[CreatePriceHead]
	-- Add the parameters for the stored procedure here
	@IDPrice as Integer
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	insert into dbo.PriceHead (IDPrice, GetTime)
	values(@IDPrice, GETDATE());
	
	SELECT scope_identity();
END


вместо return подсунул select - все прекрасно работает, только все равно осталось загадкой, почему не получается вернуть через return. Entity Framework learning guid 500 страничный который везде советуют почитать полистал, там тоже ни слова о возврате через return, хотя просматривал мельком, мог и упустить, буду благодарен, если кто ткнет носом если пропустил.
...
Рейтинг: 0 / 0
Вернуть ID из хранимой процедуры
    #37142263
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ALTER PROCEDURE [dbo].[CreatePriceHead]
	-- Add the parameters for the stored procedure here
	@IDPrice as Integer,
	@ID as Integer OUTPUT
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	insert into dbo.PriceHead (IDPrice, GetTime)
	values(@IDPrice, GETDATE());
	
	SET @ID = scope_identity();
END
...
Рейтинг: 0 / 0
Вернуть ID из хранимой процедуры
    #37145011
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Руки-крюкиxpoft2010,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ALTER PROCEDURE [dbo].[CreatePriceHead]
	-- Add the parameters for the stored procedure here
	@IDPrice as Integer,
	@ID as Integer OUTPUT
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	insert into dbo.PriceHead (IDPrice, GetTime)
	values(@IDPrice, GETDATE());
	
	SET @ID = scope_identity();
END


ну это не то чего хотелось бы, через Out параметры можно было сделать изначально, хотел именно функцию получить.
...
Рейтинг: 0 / 0
Вернуть ID из хранимой процедуры
    #37145222
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010хотел именно функцию получить.

SQL Server какой версии?

insert ...
output ...
from ...
...
Рейтинг: 0 / 0
Вернуть ID из хранимой процедуры
    #37145333
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Верблюдxpoft2010хотел именно функцию получить.

SQL Server какой версии?

insert ...
output ...
from ...

MS SQL Server 2008 R2 Express
...
Рейтинг: 0 / 0
Вернуть ID из хранимой процедуры
    #37145383
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010MS SQL Server 2008 R2 Express

insert ...
output ...
from ...

и будет функция :)
...
Рейтинг: 0 / 0
Вернуть ID из хранимой процедуры
    #37157721
axlm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xpoft2010,

Синтаксис
SCOPE_IDENTITY()
Типы возвращаемых данных
numeric(38,0) - <Int32?> ?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вернуть ID из хранимой процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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