2012-11-15 19 views
16

के साथ तालिका दोबारा बनाएं I तालिका बनाने के लिए पहले कोड का उपयोग कर रहा हूं।इकाई फ्रेमवर्क 5 और nuget

मैं कक्षा, मैपिंग फ़ाइल बनाया है और nuget में जोड़ने प्रवास आदेश और उसके बाद अद्यतन-डेटाबेस आदेश

मैं तो वर्ग बदल जारी किए गए और एक बेवकूफ की तरह तालिका नष्ट कर दिया।

मैं प्रवास वर्ग फ़ाइल

नष्ट कर दिया जब मैं अद्यतन-डेटाबेस आदेश मैं निम्नलिखित त्रुटि मिलती जारी मैं एक ऐड-प्रवास आदेश

जारी:

System.Data.SqlClient.SqlException (0x80131904): Cannot find the object "dbo.CorrectiveActionPlan" because it does not exist or you do not have permissions. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource 1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable 1 migrationStatements) at System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable 1 migrationStatements) at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable 1 operations, Boolean downgrading, Boolean auto) at System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration) at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration) at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable 1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable
1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration) at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore() at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run() ClientConnectionId:a6e92a35-cc9e-4867-97a5-0a274081d853 Cannot find the object "dbo.CorrectiveActionPlan" because it does not exist or you do not have permissions.

मैं कैसे मजबूर करते हैं टेबल को फिर से बनाने के लिए ईएफ?

उत्तर

31

मुझे मेरा जवाब मिला।

मैं [dbo] में पंक्ति हटा दी है। [__ MigrationHistory] कि मेरी प्रवासन के अनुरूप था

मैं तो नया माइग्रेशन फ़ाइल

नष्ट कर दिया मैं फिर से भाग गया ऐड-प्रवास

और उसके बाद फिर से -रान अद्यतन-डेटाबेस -verbose

+0

आपने मुझे गंभीर समय बचाया! – Pinch

+0

आपने मुझे गंभीर समय भी बचाया!:)) – Xenon

+1

आप जंगल के राजा हैं! –

-1

आप पैकेज प्रबंधक प्रबंधक कंसोल से डेटाबेस को छोड़ सकते हैं तो 'अपडेट-डेटाबेस' कमांड चलाएं, सभी आपके द्वारा किए गए अपडेट सहित पुनः बनाया जाएगा।

+0

जब तक इसमें आवश्यक डेटा नहीं था। –

+0

@Eric: सच है, लेकिन मैं अपने प्रश्न का सीधा जवाब दे रहा था (मैं तालिका को फिर से बनाने के लिए ईएफ को कैसे मजबूर करूं?) - कुंजी शब्द "पुनः बनाना" –

0

कोड-प्रथम माइग्रेशन के लिए मेरे शस्त्रागार में कुछ विकल्प हैं और वे इस बात पर निर्भर करते हैं कि आपको टेबल को हटाने या रिकॉर्ड्स को हटाने की आवश्यकता क्यों है। यहाँ मेरी तरीकों है:

  • आप संशोधित मॉडल और मैपिंग एक त्रुटि है कि आप तालिकाओं को अद्यतन करने के आप एसक्यूएल प्रबंधन सर्वर स्टूडियो का उपयोग कर पूरे डेटाबेस को हटाएँ सकता & हटाएँ सक्षम नहीं होने से रोकता है कारण बन रहे हैं माइग्रेशन फ़ोल्डर आप एक स्क्रिप्ट स्क्रिप्ट का उपयोग करके अपने टेस्ट डेटा को फिर से पॉप्युलेट करने या अपनी कॉन्फ़िगरेशन.cs फ़ाइल को सहेजने के लिए स्क्रिप्ट को सहेजना चाह सकते हैं और जब आप अद्यतन डेटाबेस कमांड निष्पादित करते हैं तो डेटा फिर से पॉप्युलेट हो जाएगा। PM> Update-Database -TargetMigration $InitialDatabase & प्रवास को हटा दें: आप सिर्फ डेटा आप पैकेज प्रबंधक कंसोल आदेश का उपयोग कर सकते हैं ड्रॉप चाहते हैं

    USE [DatabaseName] 
    GO 
    SET ANSI_NULLS ON 
    GO 
    SET QUOTED_IDENTIFIER ON 
    GO 
    CREATE PROCEDURE [dbo].[sp_DeleteAllYardPenaltyRecords] 
    AS 
    EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' 
    EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL' 
    EXEC sp_MSForEachTable 'DELETE FROM ?' 
    EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL' 
    EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL' 
    EXEC sp_MSFOREACHTABLE 'SELECT * FROM ?' 
    
  • :

    यहाँ एक संग्रहीत प्रक्रिया सिर्फ तालिका डेटा ड्रॉप करने के लिए स्क्रिप्ट का एक उदाहरण है फ़ाइल बनाई गई यानी: '201502210525393_example_with_error.cs' और दोबारा 'एड-माइग्रेशन new_example.cs' फिर से चलाएं। यह अपने प्रारंभिक स्नैपशॉट

  • वापस करने के लिए डेटाबेस डालता है या फिर आप अपने विधि इस्तेमाल कर सकते हैं: [dbo].[__MigrationHistory] & प्रवास फ़ाइल यानी में पंक्ति को हटा: '201502210525393_example_with_error.cs' तो फिर से रन add-migration और update-database

संबंधित मुद्दे