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的原因,我会看到该错误