我剛剛創建了一個數據庫並完成了我的第一次遷移(只是一個簡單的表格添加)。現在我想添加一些存儲過程,這些存儲過程是通過編寫sql並在Management Studio中執行來添加的。但我希望在遷移時儘可能包含這些存儲過程,以便保存它們,並且可以針對它們運行向上或向下方法。這是可能的,如果是這樣,需要使用什麼語法?或者我只需要使用Management Studio添加/編輯/刪除它們?代碼優先遷移和存儲過程
18
A
回答
23
我做這個是這樣的...
在目前的移民類 -
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 ...
";
}
7
我使用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; "); } }
相關問題
- 1. EntityFramework5代碼優先遷移
- 2. 代碼優先遷移MissingManifestResourceException
- 3. EF 6代碼優先遷移跳過
- 4. LocalDb的代碼優先遷移和DataDirectory
- 5. DDD和EF代碼優先遷移
- 6. 在執行代碼優先遷移過程中上傳圖片
- 7. 代碼優先遷移過程:我缺少什麼部分?
- 8. EF代碼優先遷移不編譯
- 9. 被代碼優先遷移困惑
- 10. EF 5 - 代碼優先遷移
- 11. 的EntityFramework代碼優先遷移
- 12. 如何啓用代碼優先遷移
- 13. EF代碼優先4.3:遷移/種子
- 14. 不使用代碼優先遷移
- 15. 代碼優先遷移未執行
- 16. EF5代碼優先 - 遷移列類型
- 17. WebSecurity.InitializeDatabaseConnection不配合代碼優先遷移
- 18. 實體框架4 - 代碼優先和存儲過程
- 19. 實體框架代碼優先和存儲過程
- 20. 從EF自動遷移到代碼優先遷移
- 21. 代碼優先遷移 - 如何回滾首次遷移
- 22. EF6代碼優先遷移:遷移事件
- 23. 通過Visual Studio 2013部署時無代碼優先遷移
- 24. EF4.1代碼優先:存儲過程與輸出參數
- 25. EF(6.1)代碼優先存儲過程問題
- 26. EF 4.1代碼優先:執行存儲過程並返回IDENT
- 27. EF 6代碼優先:如何更新存儲過程?
- 28. 使用實體框架代碼優先創建存儲過程?
- 29. 存儲過程在代碼優先中引發Guids錯誤
- 30. 代碼優先存儲過程不同表
可能欺騙http://stackoverflow.com/questions/7667630/can-you-create-sql-views-stored-procedure-using-entity- framework-4-1-code-firs –