Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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 вставлен. [Ид] В @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 в том, что если создать индекс на поле UNIQUEIDENTIFIER, новое значение, генерируемое с помощью newid, не фиксировано, поэтому новое значение вызывает случайное изменение в индексном дереве B+. Если новое значение, получаемое ньюсеквенциалидом, регулярно, то изменение индексного дерева B+ является регулярным. Регулярность и нерегулярность приводят к улучшению производительности.

2: UNIQUEIDENTIFIER — очень удобная функция в качестве первичного ключа, которая обладает незаменимыми преимуществами в операциях, таких как слияние данных
Однако из-за децентрализации обычных GUID, если первичный ключ добавлен в кластерный индекс, он будет значительно менее эффективен при вставке записей

SQL SERVER 2005 добавляет новую функцию под названием NEWSEQUENTIALID, которую MSDN объясняет:
Создайте GUID на указанной машине, который будет больше любого ранее сгенерированного GUID этой функцией.
NEWSEQUENTIALID() нельзя ссылаться в запросе.
Примечание: это означает, что его можно использовать только как DEFAULT ЗНАЧЕНИЕ столбца базы данных и не может выполнять операторы вроде 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