EF'in bunu bu makalede kullanmasını söylemenin bir yolunu bulamadım, ancak burada bir kaç çözüm var. Davanıza uygun olup olmadığını kontrol edin.
- Varlık Framework, app.config vb daki DBContext, kişiler, bağl dize tanımlayın yükleyin
- Göç Enable - Paket Yöneticisi Konsolu çalıştırmak - Paket Yöneticisi Konsolu '-EnableMigration'
- DbMigration oluşturma çalışmasına 'Add-Migration MigrationName'
- Ovverided
Up
yönteminde oluşturulan DbMigration sınıfında, sql'nizi benzersiz nullable dizin oluşturmak için çalıştırın.
kodu:
// Add unique nullable index
string indexName = "IX_UQ_UniqueColumn";
string tableName = "dbo.ExampleClasses";
string columnName = "UniqueColumn";
Sql(string.Format(@"
CREATE UNIQUE NONCLUSTERED INDEX {0}
ON {1}({2})
WHERE {2} IS NOT NULL;",
indexName, tableName, columnName));
Not: de bir downgrade oluşturmak unutmayın. Zaten benzersiz dizin kısıtı çakışabilir veritabanınızda veri varsa
DropIndex(tableName, indexName);
Ayrıca bazı ek kod gerekebilir:
Down
yöntemi ve iç
DropIndex
yöntemi kullanmak Ovveride.
Not: Burada CreateIndex yöntemini kullanabilirsiniz ancak doğru dizini oluşturmayı başaramadım. EF sadece anonim olanlarımı görmezden geliyor ya da yanlış yazarım. Kendiniz deneyebilir ve sonucunuzla burada yazabilirsiniz. sözdizimi aşağıdaki gibidir:
CreateIndex(
table: "dbo.ExampleClasses",
columns: new string[] { "UniqueColumn" },
unique: true,
name: "IX_UniqueColumn",
clustered: false,
anonymousArguments: new
{
Include = new string[] { "UniqueColumn" },
Where = "UniqueColumn IS NOT NULL"
});
5 deneyin benzersiz sütun için boş değerler ve diğer eşit değerlere sahip iki etries ekleyin.
İşte demo kodum - Pastebin
Teşekkürler Viktor! Benim için mükemmel çalışıyor. Öte yandan "anonymousArguments" sağlayıcıya bağımlıdır ve SQL Server bunu görmezden gelir. – Subgurim
Oluşturma dizini çözümü çalışmıyor Başlatmayı tercih ediyorum çünkü başımın içinde kafam karıştı. Teşekkürler Viktor – kartal
AnonymousArguments yaklaşımı işe yaramadı çok kötü. Çevresinde belge eksikliği var gibi görünüyor. Hangi değerler desteklenir vb. – Dashu