C# C.NET4.0 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列 这是我的密码: 应用程序代码隐藏: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方法
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)`