Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 30236|Yanıt: 1

[Kaynak] EF, birincil anahtar Id'yi guid kendiliğinden büyüyen tipe ayarlıyor

[Bağlantıyı kopyala]
Yayınlandı 4.11.2016 13:27:38 | | | |


Varlık kodu aşağıdaki gibidir:



Ekleme kodu şöyledir:



Sadece ismin değerini belirliyoruz ve id'ye değer atamıyoruz, üretilen sql ifadesinin ne olduğuna bakalım??? , aşağıdaki gibi:

exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier)
[dbo] EKLE. [TestTab] ([İsim])
ÇIKIŞ eklendi. [Id] INTO @generated_keys
DEĞERLER (@0)
SEÇ t.[Id]
@generated_keys AS G JOIN [DBO]. [TestTab] AS t on g.[Id] = t.[Id]
NEREDE @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architectwww.itsvse.com'


INSERT TestTab tablosunun sadece İsim alanını eklediğini gördük, Id'nin varsayılan bir değeri var mı??? Şunu bulduk

ef, Id birincil anahtarının varsayılan değer tını, varsayılan değer veya bağlama "(newsequentialid())" belirlememe yardımcı oldu ve newsequentialid() fonksiyonunu kullanmamda yardımcı oldu; bu fonksiyon aşağıdaki gibi tanıtılır:


1.: Newequentialid fonksiyonunun newid fonksiyonuna göre en büyük avantajı, bir UNIQUEIDENTIFIER alanında bir indeks oluşturursanız, newid kullanılarak oluşturulan yeni değerin sabit olmaması, bu yüzden yeni değerin indeks B+ ağacındaki değişikliğin rastgele olmasıdır. Newsequentialid tarafından üretilen yeni değer düzenli ise, B+ indeks ağacının değişimi normaldir. Düzenlilik ve düzensizlik performans iyileştirmelerine yol açar.

2: UNIQUEIDENTIFIER, birincil anahtar olarak çok kullanışlı bir şeydir ve veri birleştirme gibi işlemlerde yerini dolduramaz avantajlara sahiptir
Ancak, sıradan GUID'lerin merkeziyetsizleştirilmesi nedeniyle, birincil anahtar kümelenmiş bir indekse eklenirse, kayıt eklenirken çok daha az verimli olur

SQL SERVER 2005, MSDN açıklayan NEWSEQUENTIALID adlı yeni bir fonksiyon ekliyor:
Belirtilen makinede, fonksiyon tarafından daha önce oluşturulan herhangi bir GUID'den daha büyük bir GUID oluşturun.
NEWSEQUENTIALID() sorguda referans alınamaz.
Not: Bu, yalnızca bir veritabanı sütununun DEFAULT DEĞERİ olarak kullanılabileceği ve SELECT NEWSEQUENTIALID() gibi iyimleri çalıştıramadığı anlamına gelir.
NEWSEQUENTIALID() tarafından oluşturulan GUID, yalnızca bilgisayarın ağ kartı yoksa o bilgisayarda benzersizdir.
Not: Bu cümle yanlış, sadece bilgisayarda ağ kartı olduğunda oluşturulan GUID dünyada benzersiz olmalıdır
NEWSEQUENTIALID() kullanarak yaprak düzeyindeki indekste sayfa çatışmasını azaltmak için bir GUID oluşturabilirsiniz.





Önceki:EasyUI Control Sekmesi bir geçiş fonksiyonu ekliyor
Önümüzdeki:c#/.Net koleksiyonu katman katman değeri
Yayınlandı 1.02.2018 10:43:26 |
Evet, teşekkürler! Ev sahibinin becerileri çok zor! Sert
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com