हमारे पास नामकरण वस्तुओं का अपना बाहरी सम्मेलन है और मुझे स्वत: जेनरेट की गई विदेशी कुंजी बाधाओं के लिए नामकरण सम्मेलन को बदलने की आवश्यकता है। अब ऐसा लगता है: FK_dbo.City_dbo.CityType_City_CityTypeId
लेकिन मुझे इसे City_FKC_CityType
कहा जाना चाहिए।विदेशी कुंजी बाधा नामकरण सम्मेलन
मुझे similar question मिला जो कहता है कि आप बाधाओं का नाम मैन्युअल रूप से बदल सकते हैं। हालांकि, यह मेरे अनुरूप नहीं है, क्योंकि मेरे पास बहुत सी टेबल और विदेशी कुंजी बाधाएं हैं।
मुझे "कस्टम कोड प्रथम सम्मेलन" के बारे में कुछ जानकारी मिली और मुझे आश्चर्य है कि क्या मैं इसका उपयोग कर बाधा का नाम बदल सकता हूं या यदि इसे लागू करने के लिए कोई तरीका है?
एक और संस्करण ईएफ का स्रोत कोड डाउनलोड करता है, परिवर्तन करता है और इसका उपयोग करता है लेकिन यह आपात स्थिति के मामले में होता है।
एक साइड नोट के रूप में, मैं प्राथमिक कुंजी के नामकरण सम्मेलन को भी बदलना चाहता हूं। DbConfiguration
का उपयोग कर
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
}
}
तो फिर तुम DbContext
में अपने जनरेटर रजिस्टर करने की आवश्यकता:
बोल्ड और इटैलिक का आपका प्रचुर उपयोग मेरी आँखों चोट बनाता है! साथ ही, उस उत्तर में समाधान किस तरह से उपयुक्त नहीं है? यह बहुत आसान है। – DavidG
ठीक है, मैंने इसे बदल दिया :)। मेरे पास बहुत सी टेबल हैं और प्रत्येक तालिका में कुछ बाधा है। प्रत्येक विदेशी कुंजी – Marusyk