Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 方法只能在调用存储过程时对Type.IsGenericParameter为true的类型调用_C#_Entity Framework_Stored Procedures - Fatal编程技术网

C# 方法只能在调用存储过程时对Type.IsGenericParameter为true的类型调用

C# 方法只能在调用存储过程时对Type.IsGenericParameter为true的类型调用,c#,entity-framework,stored-procedures,C#,Entity Framework,Stored Procedures,在我的解决方案中,我有一个静态方法,它调用将返回消息的存储过程。当我调用这个过程时,我得到了上面的错误 我正在使用实体框架 System.Data.Objects.ObjectParameter returnMessage = new System.Data.Objects.ObjectParameter("ReturnMessage", typeof(string)); //TO VALIDATE IF DISCOUNT HAS ALREADY BEEN APPLIED TO AN INVO

在我的解决方案中,我有一个静态方法,它调用将返回消息的存储过程。当我调用这个过程时,我得到了上面的错误

我正在使用实体框架

System.Data.Objects.ObjectParameter returnMessage = new System.Data.Objects.ObjectParameter("ReturnMessage", typeof(string));

//TO VALIDATE IF DISCOUNT HAS ALREADY BEEN APPLIED TO AN INVOICE
dbTCMS.SP_CheckForInvoice(int.Parse(discount.EntityNo), DateTime.Now, discount.ProductDescription, returnMessage);

if (!string.IsNullOrEmpty(returnMessage.Value.ToString()))
    return returnMessage.Value.ToString();
objectParamer returnMessage返回空值


我不知道如何解决这个问题。

我找到了解决问题的方法。I存储过程返回一个列表,然后调用SP应如下所示:

var s = dbTCMS.SP_CheckForInvoice(int.Parse(discount.EntityNo), DateTime.Now, discount.ProductDescription, returnMessage);
然后可以枚举整个结果集

如果SP只返回一个值,则按如下方式调用它:

dbTCMS.SP_CheckForInvoice(int.Parse(discount.EntityNo), DateTime.Now, discount.ProductDescription, returnMessage);

我必须更改我的过程,使其不返回结果集

是的,它在Entity Framework中引发异常的是哪一行?在这一行:if(!string.IsNullOrEmpty(returnMessage.Value.ToString())我得到的错误是,对象未设置为对象的实例,当我查看堆栈跟踪时,我得到了上面提到的错误,您在哪里看到“当调用存储过程时,只能对Type.IsGenericParameter为true的类型调用方法”??因为坦率地说,我怀疑这里真正的问题只是对
null
的值调用
.ToString()
,导致“对象未设置为实例”-修复它应该只是正确设置参数方向性的一种情况,或者处理
null
如果存储过程真正返回
null
则无论发生什么,存储过程始终返回字符串,因此ObjectParameter不能为null。我已经测试了我的程序,效果很好。如果我在调试模式下查看错误以了解其为null的原因,我会看到该错误