ईएफ के संस्करण पर निर्भर करता है जिसका आप उपयोग कर रहे हैं। माइग्रेशन के साथ भी आप जो परिणाम देखेंगे वह कुछ है:
"ड्रॉप कॉलम आईडी" और "कॉलम टीम आईडी जोड़ें"।
यह आप सभी मूल्यों और "बच्चे कनेक्शन" खो देंगे साथ
......
केवल "सुरक्षित" समाधान मैं इस बिंदु पर देख रहा हूँ माइग्रेशन और "हाथ एसक्यूएल संचालन" का एक मिश्रण है।
आसान उपाय:
1- विचार में ले रही है आप पहले से ही एक "आधार" माइग्रेशन आईडी के साथ तालिका बनाने है, अब "अद्यतन" के साथ नया माइग्रेशन पैदा करते हैं। अब इसे अभी तक न चलाएं।
2- ओपन उस फ़ाइल और उत्पन्न लाइनों से पहले एक नई लाइन लिख सकते हैं और किसी SQL आदेश, कुछ इस तरह का उपयोग करें:
SQL("ALTER TABLE table_name RENAME COLUMN old_name to new_name;");
यह नाम बदल जाएगा इससे पहले कि माइग्रेशन स्तंभ हटा कर एक नया बनाने एक, क्या होगा: आप हटाए जाने से पहले नाम बदलते हैं, फिर हटा दिया जाता है लेकिन यह "असफल" होगा लेकिन इससे कुछ भी नुकसान नहीं पहुंचाएगा।
लेकिन अब आप पूछते हैं: मैं ऐसा क्यों करता हूं? ठीक है अगर आप माइग्रेशन का उपयोग कर रहे हैं भले ही आप कॉलम को हटाने और एक नया निर्माण करने के लिए लाइनों को हटा दें, अगली बार जब आप स्वचालित रूप से एक नई माइग्रेशन फ़ाइल बनाते हैं तो यह नई लाइनें वहां होंगी ... यही कारण है कि।
UPDATED उत्तर # 1
जब मैं इकाई की रूपरेखा माइग्रेशन मैं इस की चर्चा करते हुए कर रहा हूँ के बारे में बात: जब आप 'ऐड-प्रवासन AddBlogUrl' पैकेज प्रबंधक कंसोल, एक नई फ़ाइल में कमांड चलाएं http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx (* .cs) बनाया गया है।एसक्यूएल के साथ इस फ़ाइल माइग्रेशन फ़ाइल के
उदाहरण आदेश:
public partial class AddAbsencesTypesAndCategories : DbMigration
{
public override void Up()
{
CreateTable(
"pvw_AbsenceType",
c => new
{
Id = c.Int(nullable: false, identity: true),
Name = c.String(nullable: false),
CountAsVacation = c.Boolean(nullable: false),
IsIncremental = c.Boolean(nullable: false),
})
.PrimaryKey(t => t.Id);
.....
AddColumn("pvw_Absence", "CategoryId", c => c.Int(nullable: false));
AddForeignKey("pvw_Absence", "StatusId", "pvw_AbsenceStatusType", "Id");
AddForeignKey("pvw_Absence", "CategoryId", "pvw_AbsenceType", "Id");
CreateIndex("pvw_Absence", "StatusId");
CreateIndex("pvw_Absence", "CategoryId");
DropColumn("pvw_Absence", "MainCategoryId");
DropColumn("pvw_Absence", "SubCategoryId");
......
Sql(@"
SET IDENTITY_INSERT [dbo].[pvw_AbsenceStatusType] ON
INSERT pvw_AbsenceStatusType (Id, Name) VALUES (1, N'Entwurf')
SET IDENTITY_INSERT [dbo].[pvw_AbsenceStatusType] OFF
");
.....
}
public override void Down()
{
........
}
आप टीम आईडी को प्राथमिक कुंजी आईडी [कॉलम ("आईडी") विशेषता के साथ मैप कर सकते हैं या कॉलम नाम और पीओसीओ चर दोनों को टीमआईडी नाम दिया जाना चाहिए? –
@ marvc1 मैं आपके सुझाव की कोशिश कर रहा हूं, मैं आपको एक मिनट – Komengem
@ marvc1 हे दोस्त में सूचित करूंगा, आपका सुझाव काम कर रहा है और मुझे लगता है कि आपने नीचे एक जवाब दिया है। – Komengem