Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# 类型为';System.NullReferenceException';在EntityFramework.dll中发生,但未在用户代码中处理:执行存储过程_C#_Entity Framework - Fatal编程技术网

C# 类型为';System.NullReferenceException';在EntityFramework.dll中发生,但未在用户代码中处理:执行存储过程

C# 类型为';System.NullReferenceException';在EntityFramework.dll中发生,但未在用户代码中处理:执行存储过程,c#,entity-framework,C#,Entity Framework,我的代码如下: User user = new User(); WFMModel db = new WFMModel(); SqlParameter param1 = new SqlParameter("@username", username); SqlParameter param2 = new SqlParameter("@password", password); SqlParameter param3 = new SqlParameter("@Version", Ve

我的代码如下:

 User user = new User();
  WFMModel db = new WFMModel();
  SqlParameter param1 = new SqlParameter("@username", username);
  SqlParameter param2 = new SqlParameter("@password", password);
  SqlParameter param3 = new SqlParameter("@Version", Version);`



var userData = db.Database.SqlQuery<User>("usp_Rep_App_DotNet_Validate_User_new @username,@password,@Version",
param1, param2, param3);
但是当代码执行时,我得到了错误: EntityFramework.dll中发生“System.NullReferenceException”类型的异常,但未在用户代码中处理

当我运行存储过程时,我得到的数据没有任何问题(也没有空值)

知道发生了什么吗?
提前感谢。

传递到参数(用户名、密码或版本)中的一个变量可能为空。设置断点,然后将鼠标悬停在每个变量上,查看哪个变量引发异常。在查询中使用这些值之前,需要采取适当的措施检查这些值是否为null


如果您希望从SQL Server的角度将参数设置为“null”,则需要使用DBNull。Value-数据库使用DBNull,C#使用null,并且它们不可互换(尽管您可能希望它们是可以互换的)。

传递到参数中的变量之一(用户名、密码或版本)很可能为空。设置断点,然后将鼠标悬停在每个变量上,查看哪个变量引发异常。在查询中使用这些值之前,需要采取适当的措施检查这些值是否为null


如果希望从SQL Server的角度将参数设置为“null”,则需要使用DBNull.Value-数据库使用DBNull,C#使用null,并且它们是不可互换的(尽管您可能希望它们是可互换的)。

您确定UserID列将返回字符串而不是整数吗


您的一个参数值也可能为null。

您确定您的UserID列将返回字符串而不是整数吗


您的一个参数值也可能为null。

我自己在尝试使用实体检索SQL存储过程的返回时遇到了很多问题,有大约3种方法可以正确执行此操作,以下是链接:

这种方法对我有效:

许多人喜欢:

这是大多数人使用的一种长而普通的方法:


当然,您可以使用这三种方法中的一种,如果它们都做相同的事情:检索存储过程的返回。

我自己在尝试使用实体检索SQL存储过程的返回时遇到了很多麻烦,有大约三种方法可以正确执行,以下是链接:

这种方法对我有效:

许多人喜欢:

这是大多数人使用的一种长而普通的方法:



您当然可以使用这三种方法中的一种,如果它们都执行相同的操作:检索存储过程的返回。

Try-Catch
并查看异常?@rory.ap:我在var-userData=db.Database.SqlQuery行收到一个错误。@Hackerman:我做了一个Try-Catch,这是我得到的例外。你在哪里使用
User=new User()
?@Hackerman:这是代码的第一行。
Try-Catch
并查看异常情况?@rory.ap:我在var-userData=db.Database.SqlQuery行发现一个错误。@Hackerman:我做了一个Try-Catch,这是我得到的异常情况。你在哪里使用
User=new User()?@Hackerman:这是代码的第一行。谢谢@Elemental Pete,我检查了参数是否为null。参数本身不能为null,因为您将它们声明为新的SqlParameter。不过,分配给参数的值可能为null。您需要检查的三件事是用户名、密码和版本。谢谢,该值不是null,但它超过了参数的长度。现在,当我运行它时,它不会抛出任何错误,但也不会返回任何值;OracleConnection con=新的OracleConnection(strOra)//此处
@BN-在名为“ConnectionString_IPCOLO”的列表中可能没有连接字符串-这将导致该属性为null,并且将null赋值给变量strOra。当您在下一行中使用它时,它会抛出一个null引用异常,因为它是null。将第二行更改为
if(!string.IsNullOrEmpty(strOra)){//original code here}else{//error handling}
。谢谢@Elemental Pete,我检查了参数是否为空。参数本身不能为空,因为您将它们声明为新的SqlParameter。不过,分配给参数的值可能为null。您需要检查的三件事是用户名、密码和版本。谢谢,该值不是null,但它超过了参数的长度。现在,当我运行它时,它不会抛出任何错误,但也不会返回任何值;OracleConnection con=新的OracleConnection(strOra)//此处@BN-在名为“ConnectionString_IPCOLO”的列表中可能没有连接字符串-这将导致该属性为null,并且将null赋值给变量strOra。当您在下一行中使用它时,它会抛出一个null引用异常,因为它是null。将第二行更改为
if(!string.IsNullOrEmpty(strOra)){//original code here}else{//error handling}
。谢谢,该值不是null,但超过了参数的长度。现在,当我运行它时,它不会抛出任何错误,但也不会返回任何值。谢谢,该值不是null,但它超过了参数的长度。现在,当我运行它时,它不会抛出任何错误,但也不会返回任何值。
public class User
    {
        public string UserID;
        public string FirstName;
        public string LastName;
        public string Message;
        public string Department;
    }