Кодът на обекта е следният:
Кодът за вмъкване е следният:
Задаваме само стойността на името и не присвояваме стойност на 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 и да намалите конкуренцията на страницата в индекса на ниво лист.
|