使用SqlQuery在ef5上调用存储过程的问题

时间:2013-09-23 15:00:35

标签: sql-server-2008 stored-procedures linq-to-entities entity-framework-5

我有一个搜索我的人员表的存储过程,我想在我的ef5项目中使用它,我想用这样的SQL语句来调用它:

string sqlQuery = "SELECT [dbo].[sp_Search_Natural_Person] ({0}, {1}, {2})";
System.Object[] parameters = { buscar, buscarTipo, buscarPor};
var resultado = db_hms.Database.SqlQuery<PagingPersonItem>(sqlQuery, parameters).ToList();

我需要这样调用它,因为我的数据库模式正在发生很大变化,而DB中的选项更新模型从来没有正常工作,因此我删除了end重新创建模型。

PagingPersonItem是一个包含查询结果属性的类。

但是我收到了这个错误:

西班牙语:

  

No se encuentra la columna“dbo”olafuncióndefinidapor el usuario o agregado“dbo.sp_Search_Natural_Person”; o bien,el nombre es ambiguo

和英语会是这样的:

  

找不到名为“DBO”的列或用户定义的函数添加“dbo.sp_Search_Natural_person”;或者名字含糊不清

1 个答案:

答案 0 :(得分:1)

你的SP_Search_Natural_Person真的是StoredProcedure还是用户定义的函数?

从你的select语句看起来它看起来像一个Udf,但从名称看起来就像一个存储过程。

对于存储过程,我会使用以下语句:

string sqlQuery = "EXEC [dbo].[sp_Search_Natural_Person] {0}, {1}, {2}";
System.Object[] parameters = { buscar, buscarTipo, buscarPor};
var resultado = db_hms.Database.SqlQuery<PagingPersonItem>(sqlQuery, parameters).ToList();