使用实体框架读取存储过程的非类型化结果

本文关键字:类型化 结果 存储过程 读取 实体 框架 | 更新日期: 2023-09-27 17:55:53

我正在使用实体框架来调用存储过程。

当我调用从表中返回结果集的存储过程时,它可以工作:

var user= context.Database.SqlQuery<User>("get_My_User, @Name, @Mail",
            new SqlParameter("@Name", 'Maurice'),
            new SqlParameter("@Mail", 'maurice.abruti@yahoo.com')
            ).FirstOrDefault();

不幸的是,当我调用具有非表的结果集的存储过程时,我无法获得任何结果。

此尝试始终返回 -1:

var result = context.Database.ExecuteSqlCommand("my_stored_procedure @Param1, @Param2",
 new SqlParameter("@Param1", "value1"),
 new SqlParameter("@Param2", "value2"));

此其他尝试返回空对象列表:

 var generatedDesignations = context.Database.SqlQuery<Object>(
        "my_stored_procedure @Param1, @Param2",
    new SqlParameter("@Param1", "value1"),
    new SqlParameter("@Param2", "value2")).ToList();

你知道怎么做吗?

使用实体框架读取存储过程的非类型化结果

我不使用 SqlQuery 和 ExecuteSqlComman 方法。Bu 我可以用另一种方式重新评论。如果在 VS 的服务器资源管理器中定义存储过程,则其使用会更容易。您可以将其用作方法。为了定义它;
1) 打开服务器资源管理器,
2)查找数据连接的存储过程。
3)右键单击并添加写入存储过程。
4)更新它。
5) 更新 EDMX
6) 使用存储过程上下文。存储过程名称(参数)