Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 30236|Отговор: 1

[Източник] EF задава първичния ключ Id на гидния саморастящ се тип

[Копирай линк]
Публикувано в 4.11.2016 г. 13:27:38 ч. | | | |


Кодът на обекта е следният:



Кодът за вмъкване е следният:



Задаваме само стойността на името и не присвояваме стойност на id, нека разгледаме какво представлява генерираното sql твърдение??? , както следва:

exec sp_executesql N'DECLARE @generated_keys таблица ([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 функцията е, че ако създадете индекс върху поле UNIQUEIDENTIFIER, новата стойност, генерирана с 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 колекция масив слой по слой стойност
Публикувано в 1.02.2018 г. 10:43:26 ч. |
Да благодаря! Уменията на наемодателя са много трудни! Трудно
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com