【发布时间】:2016-07-06 21:58:30
【问题描述】:
我正在使用实体框架来调用存储过程。
当我调用从表中返回结果集的存储过程时,它可以工作:
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();
你知道怎么做吗?
【问题讨论】:
-
当您说“来自多个表的结果”时,您是指返回多个数据集的存储过程吗?
-
不,我只是从不同的表中取列
-
为什么要为此使用实体框架?似乎是 Dapper 的完美用例。
-
@DavidL 因为在我的项目中,存储过程在部分时间返回表的内容
-
我读过this answer 来回答一个类似的问题(我自己没有测试过)。它可能会变得有些复杂,在您的位置上,我会问自己这些好处是否值得复杂化,而不仅仅是重构以使用适当的类型。很可能是你的情况,但我会看看一旦我得到数据后我将如何处理数据。
标签: c# sql-server entity-framework stored-procedures