|
Linq и @@Identity
|
|||
---|---|---|---|
#18+
Добрый день! Имеется ли в LINQ средство для того, что бы прочитать автоинкрементное ключевое поле после создания в таблице новой строки? В T-SQL это делается элементарно SELECT @temp=@@Identity А вот как это сделать в Linq, то есть не прибегая к построению хранимой процедуры - не пойму. Может это вообще невозможно - нет такого языкового средства? Фрагмент кода: Table_2 t = new Table_2 { НазваниеТовара = textBox2.Text }; _db.Table_2s.InsertOnSubmit(t); labelIdentity.Text = _db.НовоеЗначениеИнкремента().ToString(); _db.SubmitChanges(); Хранимая процедура: CREATE FUNCTION [dbo].[НовоеЗначениеИнкремента] ( ) RETURNS int AS BEGIN DECLARE @temp int SELECT @temp = @@IDENTITY RETURN @temp END Это не работает в приведённом коде на C# после _db.Table_2s.InsertOnSubmit(t) Видимо ...Submit(...) чистит всё. Что посоветуете? Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2012, 12:34 |
|
Linq и @@Identity
|
|||
---|---|---|---|
#18+
после _db.Table_2s.InsertOnSubmit(t); t.id апдейтится должна, если в самой таблице счётчик стоит, а не триггер. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2012, 13:04 |
|
Linq и @@Identity
|
|||
---|---|---|---|
#18+
Erik_Kartmann, Действительно стоит счётчик, то есть на уровне Linq никак, а нужно модифицировать таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2012, 13:36 |
|
Linq и @@Identity
|
|||
---|---|---|---|
#18+
Erik_Kartmann, Для данного частного случая (инкрементный счётчик) решил проблему используя функцию MAX(...) DECLARE @temp int SELECT @temp = MAX(НомерТовара) FROM dbo.Table_2 RETURN @temp ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2012, 10:46 |
|
Linq и @@Identity
|
|||
---|---|---|---|
#18+
ValGer, зачем лишний запрос? у вас есть новая сущность NewEntity. После Submit() у нее будет идентификатор, который назначит БД. Не совсем вопрос понятен ваш ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2012, 11:55 |
|
Linq и @@Identity
|
|||
---|---|---|---|
#18+
ValGerErik_Kartmann, Для данного частного случая (инкрементный счётчик) решил проблему используя функцию MAX(...) DECLARE @temp int SELECT @temp = MAX(НомерТовара) FROM dbo.Table_2 RETURN @temp НИКОГДА так не делай!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2012, 07:57 |
|
|
start [/forum/topic.php?fid=17&tid=1350195]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
138ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 18ms |
total: | 255ms |
0 / 0 |