【问题标题】:Issue calling a stored procedure on ef5 using SqlQuery使用 SqlQuery 在 ef5 上调用存储过程的问题
【发布时间】:2013-09-23 15:00:34
【问题描述】:

我有一个搜索我的 person 表的存储过程,我想在我的 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 中的选项更新模型一直无法正常工作,所以我删除并重新创建模型。

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

但是我收到了这个错误:

西班牙语:

No se encuentra la columna "dbo" o la función definida por el usuario o agregado "dbo.sp_Search_Natural_Person"; o bien, el nombre es ambiguo

英语会是这样的:

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

【问题讨论】:

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


    【解决方案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();
    

    【讨论】:

    • 我第一次尝试这个时,我把 () 留在了参数上,现在它让它失败了,效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多