c# . net 4.0 TableAdapter.Update() won't插入新记录

本文关键字:新记录 插入 won net TableAdapter Update | 更新日期: 2023-09-27 18:02:43

我有一个小的应用程序,它由DAL, BLL和应用程序本身组成,它们都在Visual Studio 2010的一个解决方案下的不同项目中。

我的DAL使用xsd文件来查询数据库,我的BLL有方法从DAL获取信息并使用它做事情。

目前,我正试图使用应用程序背后的代码插入记录,以调用BLL中的方法,然后尝试通过使用DAL的xsd文件中生成的Tableadapter.Update()方法插入记录。

我已经可以选择和更新记录没有问题,但我不能插入记录。

据我所知,TableAdapter.Update()方法应该知道插入一个新记录,如果我提供它一个新的行,但是它返回一个值0 -这意味着0行受到影响,所以它不工作。

我要插入的表名为tblRoles。

它有一个'ID'列,这是一个int,主键和标识列。它有一个'Name'列,参数为nvarchar(50),它有4个'CanAdduser'等列,参数为bit类型。

下面是我的代码:

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()查询时,我确实确保它自动生成插入,更新和删除语句。

c# . net 4.0 TableAdapter.Update() won't插入新记录

您还没有向DataTable添加新的Role-Row

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)`