实体框架,具有返回类型的函数导入:无..返回 int?
Posted
技术标签:
【中文标题】实体框架,具有返回类型的函数导入:无..返回 int?【英文标题】:Entity Framework, Function Import with Return Type: None.. returns int? 【发布时间】:2013-05-20 21:38:46 【问题描述】:我在我的 Store 中添加了一个存储过程,它在我的模型中创建了一个函数导入,并且我将返回类型设置为 None,因为存储过程仅执行插入或更新。
然而,生成的 ObjectContext 方法返回一个 int,而不是 void。当我执行这个方法并且它起作用时,这个值为-1。
这是怎么回事?
[编辑]
SPROC 很简单,如下所示:
SET NOCOUNT ON
UPDATE Notes SET vchType = @Type, iPriority=5 WHERE iNoteNumber = @NoteID
不应该返回任何东西,如果我执行到一个变量中,我认为它会是零,就像在 SSMS 中一样:
DECLARE @return_value int
EXEC @return_value = [CNRD].[UpdateNoteType]
@NoteID = 12345,
@Type = N'REGULAR'
SELECT 'Return Value' = @return_value
------------------------------------------
[ Return Value ]
0
这是它的映射方式:
【问题讨论】:
您能否展示代码,或者您如何导入函数的屏幕截图? 我会截取一些屏幕截图并编辑问题 【参考方案1】:非查询方法,见备注:
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executenonquery.aspx
对于 UPDATE、INSERT 和 DELETE 语句,返回值为 受命令影响的行数。当触发器存在于 正在插入或更新的表,返回值包括数字 受插入或更新操作和数量影响的行数 受触发器或触发器影响的行数。对于所有其他类型的 语句,返回值为-1。如果发生回滚,则返回 值也是-1。
【讨论】:
这与EntityFramework无关。 OP应该如何使用这种方法? 链接解释和我引用“对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也是-1。”实体框架只是返回它从 SP 获得的值。所以我同意它与EF有关。 EF 被要求调用一个 SP,当你问“当我执行这个方法并且它工作时,这个值是 -1”时,最有可能返回的 SP 似乎与我相关。只是想帮忙解释一下。 好的。我认为您的回答不清楚。在 EF 中,当您导入 SP 时,您决定它应该返回什么。如果您选择None
EF 围绕 SP 制作的包装器,则无论从 SP 实际返回什么,都将返回 void
。
我不确定 Jens,所以仍然是一个有效的问题。我只是觉得标准的 SQL 非查询命令结果最有可能是您价值的来源。我直接调用这些命令,而不是通过 EF。以上是关于实体框架,具有返回类型的函数导入:无..返回 int?的主要内容,如果未能解决你的问题,请参考以下文章