日期:2014-05-18  浏览次数:20937 次

.net自动生成数据层的问题
#region//新增员工
public int InsertEmployee(int empid, string empno, string empname,byte sex)
{

  per.database.EmployeeDataSetTableAdapters.per_employee1TableAdapter adapter = new per.database.EmployeeDataSetTableAdapters.per_employee1TableAdapter();
  EmployeeDataSet.per_employee1DataTable table = new EmployeeDataSet.per_employee1DataTable();
  EmployeeDataSet.per_employee1Row row = table.Newper_employee1Row();
  empid=Convert.ToInt32(adapter.up_create_id("per_employee", "emp_id", 0))+1;
  row[table.emp_idColumn] = empid;
  row[table.emp_noColumn] = empno;
  row[table.emp_nameColumn] = empname;
  row[table.sexColumn] = sex;
  table.Rows.Add(row);
  DataTable dt = table.GetChanges();
  try
  {
  adapter.Update(table); ApplicationLog.WriteLog("Person", "员工", 1, table.emp_idColumn.ColumnName, table.emp_nameColumn.ColumnName, dt, null);
  return 1;

  }
  catch (Exception ex)
  {
  ApplicationLog.WriteLog("Person", "员工", 1, table.emp_idColumn.ColumnName, table.emp_nameColumn.ColumnName, dt, ex.Message);
  return -1;
  }
  }

update会报错,错误是列emp_dept1_id不能插入null,发生在表f3gsd_per_employee1

注:数据库中表名是per_employee ,且没有emp_dept1_id字段

------解决方案--------------------
看着有点晕,纯友情up
------解决方案--------------------
你的"emp_dept1_id"这列没有查入值 "emp_dept1_id不能插入null" 
你最好根据数据的设计处理 
最好是自己写ID(主键)使用GUID生成就可以
------解决方案--------------------
数据库有不能为空列,而你给它的值是空的,调试把Sql语句拿到数据库试下就知道了

------解决方案--------------------
好像是类型化的问题
你再检查一下类型化正确否??
------解决方案--------------------
可以到网上下一个代码生成工具啊,可以帮助你生成model,bll,dal层的代码