替换实体框架中使用的硬编码sql select查询

时间:2017-03-13 20:53:00

标签: c# entity-framework entity

我有以下代码:

context.Database.SqlQuery<MyEntityType>("Select a,b from MyTableA inner join MyTableB on  MyTableA.column = MyTableB.column);

这很好用,它返回一个MyEntityType列表,其中填充了MyTable和MyTableB。

问题是我在我的csharp文件中选择了硬编码。我想把它放在一个sql对象中,然后把这个sql对象的名称放在那里。但我不知道该怎么做。我必须把它放在存储的proecudre或函数中吗?如果是,只是用我的硬编码查询替换此函数的名称或存储过程就足够了吗?

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我通常使用存储过程来进行这样的自定义查询,是的,您只需使用proc的名称访问它:

context.Database.SqlQuery<MyEntityType>("my_stored_proc")

您也可以使用带参数的过程执行此操作:

var my_param = new SqlParameter("@param1", System.Data.SqlDbType.Int);
my_param.Value = 123;

context.Database.SqlQuery<MyEntityType>("my_stored_proc_with_params @param1", my_param)