Kendi harici adlandırma nesnelerimiz var ve otomatik oluşturulan yabancı anahtar kısıtlamaları için adlandırma kuralını değiştirmem gerekiyor. Şimdi gibi görünüyor: FK_dbo.City_dbo.CityType_City_CityTypeId
ama ben City_FKC_CityType
çağrılmak istiyorum.Yabancı anahtar kısıtlama adlandırma kuralını değiştirin
similar question numaralı bağlantı noktasını buldum, bu da kısıtlamaların adını el ile değiştirebileceğinizi söylüyor. Ancak, bu bana pek de uygun değil, çünkü çok fazla masa ve yabancı anahtar kısıtlarım var.
"Custom Code First Conventions" hakkında bazı bilgiler buldum ve bunu kullanarak kısıtlama adını değiştirip değiştiremeyeceğimi veya uygulamak için herhangi bir yöntem olup olmadığını merak ediyorum?
Başka bir değişken EF'nin kaynak kodunu indirir, değişiklik yapar ve bunu kullanır, ancak acil durumlarda kullanılır.
Bir yan not olarak, birincil anahtarın adlandırma kuralını da değiştirmek isterim. DbConfiguration
kullanarak
public class CustomSqlGenerator : SqlServerMigrationSqlGenerator
{
protected override void Generate(AddForeignKeyOperation addForeignKeyOperation)
{
addForeignKeyOperation.Name = getFkName(addForeignKeyOperation.PrincipalTable,
addForeignKeyOperation.DependentTable, addForeignKeyOperation.DependentColumns.ToArray());
base.Generate(addForeignKeyOperation);
}
protected override void Generate(DropForeignKeyOperation dropForeignKeyOperation)
{
dropForeignKeyOperation.Name = getFkName(dropForeignKeyOperation.PrincipalTable,
dropForeignKeyOperation.DependentTable, dropForeignKeyOperation.DependentColumns.ToArray());
base.Generate(dropForeignKeyOperation);
}
private static string getFkName(string primaryKeyTable, string foreignKeyTable, params string[] foreignTableFields)
{
// Return any format you need
}
}
Sonra DbContext
da jeneratör kaydetmeniz gerekir:
koyu ve italik Sizin bol kullanılması gözlerim zarar yapar! Ayrıca, bu cevaptaki çözüm hangi yönde uymuyor? Oldukça basit. – DavidG
Tamam, değiştirdim :). Çok fazla masa var ve her tablonun bir kaç kısıtlaması var. Her yabancı anahtar için bir isim değiştirmek uzun zaman alacaktır – Marusyk