我有一个小型应用程序,它由 DAL、BLL 和应用程序本身组成,它们都位于 Visual Studio 2010 中的一个解决方案下的不同项目中。
我的 DAL 使用 xsd 文件来查询数据库,而我的 BLL 具有从 DAL 获取信息并对其进行处理的方法。
目前,我正在尝试使用应用程序背后的代码插入记录,以调用 BLL 中的方法,然后尝试使用在 DAL 的 xsd 文件中生成的 Tableadapter.Update() 方法插入记录。
我已经可以毫无问题地选择和更新记录,但我无法插入记录。
据我所知,如果我向 TableAdapter.Update() 方法提供新行,它应该知道插入新记录,但是它返回的值为 0 - 意味着 0 行受到影响,因此它不起作用。
我要插入的表称为 tblRoles。
它有一个“ID”列,它是一个 int、主键和标识列。它有一个采用 nvarchar(50) 的“名称”列,它有 4 个采用位类型的“CanAdduser”等列。
这是我的代码:
APP代码后面:
protected void CreateRole(object sender, EventArgs e) {
RolesBL roles = new RolesBL();
roles.CreateRole(NewRoleName.Text);
RolesGridView.DataBind();
}
BLL:
private tblRolesTableAdapter adapter = new tblRolesTableAdapter();
public bool CreateRole(string Name) {
CMSDS.tblRolesDataTable roles = new CMSDS.tblRolesDataTable();
CMSDS.tblRolesRow row = roles.NewtblRolesRow();
row.Name = Name;
row.CanAddUsers = false;
row.CanEditUsers = false;
row.CanSuspendUsers = false;
row.CanChangeUserPasswords = false;
int result = adapter.Update(row);
if(result == 1) {
return true;
}
return false;
}
据我了解,这应该在表中插入一个新行,但adapter.Update(row)
继续返回 0,我不知道为什么。
当我调试时,我可以看到所有行列都被分配了正确的值,并且没有抛出错误。
任何帮助,将不胜感激!
编辑:
我忘了提到,当我在 xsd 文件中配置默认的 Fill,GetData() 查询时,我确实确保它自动生成了 Insert、Update 和 Delete 语句。