2015-10-15 55 views
0

有許多文章顯示如何使用Code First創建插入,更新和刪除過程,例如one如何使用Code First Fluent API創建自定義存儲過程

這個怎麼樣簡單的SELECT語句的自定義過程:

Select * from Customers 

我可以更改向上和向下遷移方法,但有一個方法來創建使用流利的API 直接自定義特效。

+0

使用'dbcontext.Database.SqlQuery ( 「SELECT * FROM客戶」);' – Jalal

+0

謝謝賈拉爾。這是爲了針對數據庫運行查詢,但是如何創建包含此語句的存儲過程? – usefulBee

+0

使用'dbcontext.Database.ExecuteSqlCommand(「CREATE PROCEDURE ... END」);' – Jalal

回答

1

這裏是一個我不推薦一個解決方案,但如果你想使用DbContext.Database,那就是:

using(var db = new MyDbContext(connectionString)) 
{ 
    db.Database.ExecuteSqlCommand("CREATE PROCEDURE MyProcedure ... END;"); 

    var command = "EXEC MyProcedure;"; 
    IEnumerable<Customer> customers = db.Database.SqlQuery<Customer>(command, null); 
} 
+0

很好,但在這種情況下,如何調用此過程將映射到一個甚至不存在的模型?我的意思是ExecuteSqlCommand在db中創建proc,但是然後proc結果將在模型中沒有類表示。 – usefulBee

+1

使用'DbContext.Database.SqlQuery '將過程結果映射到您的模型中。我更新了我的答案 – Jalal

+0

在數據庫中首先,EntityFramework用於創建代表proc結果的模型,例如:GetCustomers_Result。或者我必須手動創建? – usefulBee