Обработка автоматически увеличивающихся полей IDENTITY SQL Server с помощью LINQ to SQL в C # - PullRequest
0 голосов
/ 17 июня 2010

Я создаю сайт ASP.NET MVC, который использует LINQ to SQL для подключения к SQL Server, где у меня есть таблица с столбцом первичного ключа IDENTITY bigint, представляющим идентификатор.

В одном из моих методов кода мне нужно создать объект из этой таблицы, чтобы получить его идентификатор, который я помещу в другой объект на основе другой таблицы (отношение FK-to-PK).

В какой момент генерируется значение столбца IDENTITY и как его получить из моего кода?

Правильный ли подход к:

  1. Создание объекта со столбцом IDENTITY
  2. Выполните InsertOnSubmit () и SubmitChanges (), чтобы отправить объект в таблицу базы данных
  3. Получить значение свойства ID объекта

1 Ответ

1 голос
/ 17 июня 2010

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

Однако вы можете установить объект FK, а не ID для другого объекта и LINQ дляSQL сработает для вас.

EG: Если TableA.TableBID является FK to TableB.TableBID, то вы имеете в виду:

TableB b = new TableB();
context.TableB.InsertOnSubmit(b);
context.SubmitChanges();
TableA a = new TableA();
a.TableBID = b.TableBID;
context.TableA.InsertOnSubmit(a);
context.SubmitChanges();

Но вы можете сделать это водин запрос, установив объект для FK следующим образом:

TableB b = new TableB();
context.TableB.InsertOnSubmit(b);
TableA a = new TableA();
a.TableB = b;
context.TableA.InsertOnSubmit(a);
context.SubmitChanges();

, что не намного короче в коде в этом примере, но допускает только 1 место, где вы фиксируете, что обычно является хорошимвещь конструктивно.

...