我正在使用实体框架来调用存储过程。
当我调用从表中返回结果集的存储过程时,它可以工作:
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) 使用存储过程上下文。存储过程名称(参数)