Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
带有SQL数据库的C#windows应用程序_C#_Sql Server - Fatal编程技术网

带有SQL数据库的C#windows应用程序

带有SQL数据库的C#windows应用程序,c#,sql-server,C#,Sql Server,我收到这个错误: “无法将'Employee'上的'Employee_ID'属性设置为 “Int32”值。必须将此属性设置为类型为的非空值 '字符串'。” Employee_ID是int类型,但在调试模式下,我看到这一行中的错误 List<Employee> employee = tse.Employee.ToList(); List employee=tse.employee.ToList(); 有什么想法吗?像这样将属性更改为可为null的Int32,然后再试一次 publi

我收到这个错误:

“无法将'Employee'上的'Employee_ID'属性设置为 “Int32”值。必须将此属性设置为类型为的非空值 '字符串'。”

Employee_ID是int类型,但在调试模式下,我看到这一行中的错误

List<Employee> employee = tse.Employee.ToList();
List employee=tse.employee.ToList();

有什么想法吗?

像这样将属性更改为可为null的Int32,然后再试一次

public Int32? Employee_ID{ get; set; }

如错误所述,您的
Employee\u ID
必须是
string
类型

public string Employee_ID { get; set; }

您的Employee_ID正在接收一个空值(因为该ID在数据库中不存在),int32是一个值类型。 要停止此操作,可以将id声明为可为null的int,如下所示:

public int? Employee_ID{ get; set; }

但是你的雇员ID中仍然有一个空值。我建议你检查数据库,因为你不应该有一个空ID,这似乎很容易。这是一个演员错误。重铸到适当的类型,您应该可以(在本例中为非空字符串)请发布导致异常的代码、
Employee
类定义和基础列的类型。消息非常清楚-您有一个带有数字字段的字符串属性。将ID转换为int,或将字段转换为字符串。如果这样做,ID将不会自动递增,并且我需要它自动递增,对吗?在这种情况下,您应该将数据库表更改为
int
,并启用自动递增。完成此操作并删除任何字符串值后,可以将属性更改回
int
。将数据库表更改为int,然后将属性更改回int??是的,将数据库列
Employee_ID
更改为
int
,然后保留C#property
public int Employee_ID{get;set;}
。我应该在哪里写这个(public int Employee_ID{get;set;})请通知我知道,但在应用程序本身中,我需要添加一名新员工,但我需要自动递增ID,因为我没有从用户处获取ID,我应该怎么做?如果ID是数据库的主键,您应该有一个自动递增的选项。。只需检查一下,当您创建一个用户时,您不会传递id(在应用程序中),数据库将为id分配一个值。您如何添加该用户?您正在使用linq to sql框架吗?这就是我添加用户的方式==========================>private void btn_adduser_Click(object sender,EventArgs e){TSEntities tse=new TSEntities();tse.Employee.AddObject(new Employee{Employee_User=txt_usernam.Text,Employee_PassWord=txt_PassWord.Text,Employee_FullName=txt_FullName.Text});tse.SaveChanges();this.Close();}在数据库的Employee表中,转到Employee_ID并使其自动递增。(Employee_ID是主键吗?)按照你告诉我的做了,但现在我得到了另一个错误,但要得到它,我必须让你知道我的应用程序中有一个屏幕,在网格视图中加载员工数据,所以在这个函数中,我得到了错误,这里是函数代码=>private void LoadData(){TSEntities tse=new TSEntities();List employee=tse.employee.ToList();if(txt_search.Text!=“”){employee=employee.Where(e=>e.employee_User.Contains(txt_search.Text)).ToList();}gv_User.DataSource=employee;}在Employee类中应该有一个属性Employee_ID。在列表中,将光标保持在Employee上,然后右键单击go to definition,它将带您进入Employee类。在这里,您需要检查此属性。