Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 30236|Відповідь: 1

[Джерело] EF встановлює первинний ключ Id для гідного самозростаючого типу

[Копіювати посилання]
Опубліковано 04.11.2016 13:27:38 | | | |


Код сутності сутності виглядає так:



Код вставки виглядає так:



Ми встановлюємо лише значення імені і не призначаємо значення 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 для зменшення конкуренції сторінок на індексі на рівні листа.





Попередній:EasyUI Control Tab додає функцію перемикання
Наступний:c#/.Net збірка масивів за шаром значення
Опубліковано 01.02.2018 10:43:26 |
Так, дякую! Навички орендодавця дуже складні! Важко
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com