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

时间:2011-07-17 21:56:08

标签: c# .net insert adapter bll

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

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

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

我已经可以选择并更新记录没有问题,但我无法插入记录。

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

我想插入的表名为tblRoles。

它有一个'ID'列,它是一个int,主键和标识列。它有一个'Name'列,它带有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语句。

1 个答案:

答案 0 :(得分:1)

您尚未将新的Role-Row添加到DataTable。

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