2015-10-15 51 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