Код сутності сутності виглядає так:
Код вставки виглядає так:
Ми встановлюємо лише значення імені і не призначаємо значення id, давайте подивимось, що таке згенерований SQL-оператор??? , а саме:
exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier) ВСТАВИТИ [dbo]. [TestTab] ([Ім'я]) OUTPUT вставлено. [Id] У @generated_keys ЗНАЧЕННЯ (@0) ВИБРАТИ t.[Id] ВІД @generated_keys AS G JOIN [DBO]. [TestTab] AS t ON g.[Id] = t.[Id] ДЕ @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' архітекторwww.itsvse.com'
Ми виявили, що таблиця INSERT TestTab вставляє лише поле Name, чи має Id значення за замовчуванням??? Ми це знайшли
ef допоміг мені встановити тип значення за замовчуванням первинного ключа Id, значення або зв'язок за замовчуванням "(newsequentialid())", і використовував функцію newsequentialid(), яка вводиться наступним чином:
1.:Найбільша перевага функції newsequentialid над функцією newid полягає в тому, що якщо ви створюєте індекс на полі UNIQUEID, нове значення, згенероване за допомогою newid, не є фіксованим, тому нове значення призводить до випадкової зміни в дереві індексу B+. Якщо нове значення, отримане newsequentialid, є регулярним, то зміна індексного дерева B+ є регулярною. Регулярність і нерегулярність призводять до покращення продуктивності.
2: UNIQUEIDENTIFIER — це дуже зручна річ у ролі первинного ключа, яка має незамінні переваги в операціях, таких як об'єднання даних Однак через децентралізацію звичайних GUID, якщо первинний ключ додати до кластеризованого індексу, він буде значно менш ефективним при вставці записів
SQL SERVER 2005 додає нову функцію під назвою NEWSEQUENTIALID, яку MSDN пояснює: Створіть GUID на заданій машині, більший за будь-який GUID, згенерований цією функцією. NEWSEQUENTIALID() не можна посилатися у запиті.
Примітка: це означає, що його можна використовувати лише як DEFAULT VALUE у стовпці бази даних і він не може виконувати оператори на кшталт SELECT NEWSEQUENTIALID(). GUID, згенерований NEWSEQUENTIALID(), є унікальним у цьому конкретному комп'ютері лише якщо комп'ютер не має мережевої карти.
Примітка: Це речення неправильне, слід вважати, що лише коли комп'ютер має мережеву карту, згенерований GUID є унікальним у світі Ви можете використати NEWSEQUENTIALID() для генерації GUID для зменшення конкуренції сторінок на індексі на рівні листа.
|