Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# C.NET4.0 TableAdapter.Update()不会插入新记录_C#_.net_Insert_Adapter_Bll - Fatal编程技术网

C# C.NET4.0 TableAdapter.Update()不会插入新记录

C# C.NET4.0 TableAdapter.Update()不会插入新记录,c#,.net,insert,adapter,bll,C#,.net,Insert,Adapter,Bll,我有一个由DAL、BLL和应用程序本身组成的小应用程序,它们都位于VisualStudio2010中一个解决方案下的不同项目中 我的DAL使用一个xsd文件来查询数据库,我的BLL有方法从DAL获取信息并处理它 目前,我正在尝试使用应用程序的代码来插入一条记录,以调用BLL中的一个方法,然后该方法尝试使用DAL的xsd文件中生成的Tableadapter.Update方法插入该记录 我已经可以毫无问题地选择和更新记录,但我不能插入记录 据我所知,如果我为TableAdapter.Update方法

我有一个由DAL、BLL和应用程序本身组成的小应用程序,它们都位于VisualStudio2010中一个解决方案下的不同项目中

我的DAL使用一个xsd文件来查询数据库,我的BLL有方法从DAL获取信息并处理它

目前,我正在尝试使用应用程序的代码来插入一条记录,以调用BLL中的一个方法,然后该方法尝试使用DAL的xsd文件中生成的Tableadapter.Update方法插入该记录

我已经可以毫无问题地选择和更新记录,但我不能插入记录

据我所知,如果我为TableAdapter.Update方法提供新行,它应该知道插入一条新记录,但是它返回的值为0,这意味着0行受到影响,因此它不起作用

我试图插入的表称为tblRoles

它有一个“ID”列,它是一个int、主键和标识列。它有一个接受nvarchar50的“Name”列,还有4个接受位类型的“CanAdduser”etc列

这是我的密码:

应用程序代码隐藏:

protected void CreateRole(object sender, EventArgs e) {
    RolesBL roles = new RolesBL();

    roles.CreateRole(NewRoleName.Text);

    RolesGridView.DataBind();
}
BLL:

据我所知,这应该在表中插入新行,但adapter.Updaterow不断返回0,我不知道为什么

当我调试时,我可以看到所有的行列都被分配了正确的值,并且没有抛出错误

任何帮助都将不胜感激

编辑:


我忘了提到,在xsd文件中配置默认的Fill、GetData查询时,我确实确保它自动生成Insert、Update和Delete语句。

您没有将新角色行添加到数据表中

CMSDS.tblRolesDataTable roles = new CMSDS.tblRolesDataTable();
CMSDS.tblRolesRow row = roles.NewtblRolesRow();
row.Name = Name;
roles.AddtblRolesRow(row); 
int result = adapter.Update(roles); //the same as `adapter.Update(row)`

+1; 这比我的回答更有意义。好像是另一张单人桌?例子不叫改变,太棒了!你帮我省去了很多挫折:谢谢!老实说,我并不确定它是如何工作的,所以我甚至不知道Add~Row方法甚至存在。@Merlyn:adapter.Update将隐式调用AcceptChanges。
CMSDS.tblRolesDataTable roles = new CMSDS.tblRolesDataTable();
CMSDS.tblRolesRow row = roles.NewtblRolesRow();
row.Name = Name;
roles.AddtblRolesRow(row); 
int result = adapter.Update(roles); //the same as `adapter.Update(row)`