मैंने अभी एक डेटाबेस बनाया है और अपना पहला माइग्रेशन (केवल एक साधारण तालिका जोड़ें) किया है। अब मैं कुछ संग्रहीत प्रक्रियाओं को जोड़ना चाहता हूं जिन्हें मैंने एसक्यूएल लिखकर और प्रबंधन स्टूडियो में निष्पादित करके जोड़ा है। लेकिन अगर माइग्रेशन में संभव हो तो मैं इन संग्रहीत प्रक्रियाओं को शामिल करना चाहता हूं ताकि वे सहेजे जा सकें और मैं उनके खिलाफ एक ऊपर या नीचे विधि चला सकता हूं। क्या यह संभव है और यदि ऐसा है तो वाक्यविन्यास का उपयोग कैसे किया जाना चाहिए? या क्या मुझे प्रबंधन स्टूडियो का उपयोग करके उन्हें जोड़ना/संपादित करना/हटाना होगा?कोड प्रथम माइग्रेशन और संग्रहीत प्रक्रिया
उत्तर
मैं तो इस तरह किया है ...
वर्तमान माइग्रेशन वर्ग में -
public partial class MyMigration : DbMigration
{
public override void Up()
{
... other table creation logic
// This command executes the SQL you have written
// to create the stored procedures
Sql(InstallScript);
// or, to alter stored procedures
Sql(AlterScript);
}
public override void Down()
{
... other table removal logic
// This command executes the SQL you have written
// to drop the stored procedures
Sql(UninstallScript);
// or, to rollback stored procedures
Sql(RollbackScript);
}
private const string InstallScript = @"
CREATE PROCEDURE [dbo].[MyProcedure]
... SP logic here ...
";
private const string UninstallScript = @"
DROP PROCEDURE [dbo].[MyProcedure];
";
// or for alters
private const string AlterScript = @"
ALTER PROCEDURE [dbo].[AnotherProcedure]
... Newer SP logic here ...
";
private const string RollbackScript = @"
ALTER PROCEDURE [dbo].[AnotherProcedure]
... Previous/Old SP logic here ...
";
}
यदि आप प्रक्रिया को बदल रहे हैं तो क्या होगा क्योंकि यह पिछले माइग्रेशन में बनाया गया था और फिर आपको नीचे जाने की आवश्यकता है? आप उस प्रक्रिया को केवल डीआरओपी नहीं करेंगे, जिसे इसे मूल स्थिति में वापस जाना होगा, जो भी प्रक्रिया पहले की तरह दिखती है ... – Ryan
@Ryan अधिक स्पष्ट रूप से अपडेट करने के लिए अपडेट किया गया बनाम बनाम बनाएं/ड्रॉप करें – NKeddie
मुझे अधिक विशिष्ट दृष्टिकोण पसंद है http://stackoverflow.com/a/27711523/344895 – Madman
मैं EF6 और DbMigration
वर्ग का उपयोग कर रहा प्रदान करता है तरीकों/ऑल्टर/हटाएं संग्रहित प्रक्रियाओं
एक नया संग्रहीत प्रक्रिया बनाएं
public partial class MyFirstMigration : DbMigration { public override void Up() { // Create a new store procedure CreateStoredProcedure("dbo.DequeueMessages" // These are stored procedure parameters , c => new{ MessageCount = c.Int() }, // Here is the stored procedure body @" SET NOCOUNT ON; SELECT TOP (@MessageCount) * FROM dbo.MyTable; "); } public override void Down() { // Delete the stored procedure DropStoredProcedure("dbo.DequeueMessages"); } }
एक संग्रहीत प्रक्रिया
public partial class MySecondMigration : DbMigration { public override void Up() { // Modify an existing stored procedure AlterStoredProcedure("dbo.DequeueMessages" // These are new stored procedure parameters , c => new{ MessageCount = c.Int(), StatusId = c.Int() }, // Here is the new stored procedure body @" SET NOCOUNT ON; SELECT TOP (@MessageCount) * FROM dbo.MyTable WHERE StatusId = @StatusId; "); } public override void Down() { // Rollback to the previous stored procedure // Modify an existing stored procedure AlterStoredProcedure("dbo.DequeueMessages" // These are old stored procedure parameters , c => new{ MessageCount = c.Int() }, // Here is the old stored procedure body @" SET NOCOUNT ON; SELECT TOP (@MessageCount) * FROM dbo.MyTable; "); } }
संभव शिकार http://stackoverflow.com/questions/7667630/can-you-create-sql-views-stored-procedure-using-entity- संशोधित ढांचे -4-1-कोड-एफआईआर –