Otomatik artışlı bir sütuna sahip olduğumuzda, yani EF üzerinden SET IDENTITY_INSERT davranışını kullandığımızda EF'deki yeni bir varlığın kimlik değerini zorlamak için bir yol var mı?Varlık Çerçevesi SET IDENTITY_INSERT
Gereksinimimiz, form formumuzun her zaman doldurulmadan veya kaydedilmeden önce boş formda oluşturduğumuz nesne için yeni ve benzersiz bir kimlik göstermesi gerektiğidir. Fikir, bu kimliğin telefon üzerinden birine okunabilmesi ve daha sonra kullanıcının arama tamamlandıktan sonra formu tamamlayıp kaydetmesidir. Veritabanına boş bir satır ekleyerek bir kimlik ayırabiliriz ve sonra benzersiz sütunlarımız ve FK'lerimiz var; bunun yerine, güvenlik için kilitlerle arttığımız bir 'next ID' tablosu hazırladım ve bunu dikkatli olmak için nesne tablosundaki en üstteki ID'ye karşı test ediyorum. Bu fikri daha sonra, bu yeni ID'nin kullanımını geri aldığımızda kullanmak zorunda kaldık. Fakat EF'in bunu nasıl yapacağını göremiyorum.
Mümkün mü - sadece özlediğim bir şey mi? Kimliği bile bu eklenti için aşağı inanıyorum sanmıyorum, bu yüzden Save IDs etrafında SET IDENTITY_INSERT arayarak düşünmüyorum yardımcı olur. Ya da başka bir şey yapmak zorunda mıyım? Alternatifleri görebilirsiniz:
-
bir kimlik olabilir ve hepsi manuel olarak kontrol değil bizim kimlik sütunu değiştir
- : Burada bir tablo kimliği miras var yani bu çok potansiyel zordur.
- DB kimliğini ve kullanıcı görünür kimliğini ayrı bir sütuna ekleyin ve burada benzersiz kimliğimizi kaydedin.
- Yukarıdaki gibi kimliği ayırmak için boş satır; bazı nullabilirlik değişikliklerine ihtiyaç duyabilir ve bu kayıtları göz ardı etmek için veri okuma kodumuzu değiştirebilir.
Teşekkürler! Bu, EF4 (bir EDMX ve üretilen sınıflar POCO'lar kullanmadan) ve önemli olması durumunda SQL Server 2008'e karşıdır.
Kimliğin kimliğini garanti etmenin tek yolu, 'SET IDENTITY INSERT' ile oynamak, kısıtlamalarla başa çıkmak için işlevselliği yeniden değiştirmeden önce olası kopyalarla ilgileneceğiniz gerçeği düzeltmeyecektir.Bu gerçekten sadece sıralı numaraları gerektiren bir konu mu? –
@OMG Ponies Evet, belki de bundan sonra gitmenin yolu budur. Eklemek için yinelenen kimlikler kesinlikle istisnai durum olacaktır, yine de - geri beslediğimiz sıralı yeni kimlikler, kilitler vb. Ile farklı bir tabloda oluşturulmuştur, böylece işler beklenmedik bir şekilde yanlış gitmedikçe benzersiz olacaktır. – Rup
Yeni değerleri kendiniz belirlerseniz - bu durumda IDENTITY özelliklerine ne ihtiyacınız var ??? –