2011-07-17 4 views
0

新記録2010年C#.NET4.0 TableAdapter.Update()を挿入しません、私はDAL、BLLおよびVisual Studio内の1つの解決策の下で、異なるプロジェクトでのアプリケーション自体のすべてで構成されて小さなアプリケーションを持っている

私のDALはxsdファイルを使用してデータベースを照会しています。私のBLLにはDALから情報を取得するメソッドがあり、それを使って処理します。

現在、アプリケーションのコードビハインドを使用してレコードを挿入して、BLLのメソッドを呼び出し、次にxsdファイルで生成されたTableadapter.Update()メソッドを使用してレコードを挿入しようとしていますDALの

レコードを選択して更新することはできますが、レコードを挿入することはできません。

私が知る限り、TableAdapter.Update()メソッドは新しいレコードを挿入すると新しいレコードを挿入することを知っているはずですが、値0が返されます。つまり、0行が影響を受けているため、isn働いていない。

私が挿入しようとしているテーブルは、tblRolesと呼ばれています。

「ID」列は、int、主キー、およびID列です。それはnvarchar(50)を取る 'Name'カラムを持ち、それはあるタイプのビットを取る4つのCanAdduserなどのカラムを持っています。私は、これはテーブルに新しい行を挿入する必要があります理解して何から

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)は続ける:背後

APPコード:

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

    roles.CreateRole(NewRoleName.Text); 

    RolesGridView.DataBind(); 
} 

BLLここ

は私のコードです0を返すと私は理由を知らない。

私がデバッグすると、すべての行の列に正しい値が割り当てられ、エラーはスローされません。

助けていただけたら幸いです!

編集:私はデフォルトの塗りつぶしを設定したときに、XSDファイル内のGetData()クエリが、私はそれが自動挿入、更新を生成し、文を削除していることを確認しなかったことを言及するのを忘れてしまった

答えて

1

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

+1;これは私の答えよりも理にかなっています。それは他の(単一のテーブル?)の例は 'AcceptChanges'を呼び出さないようです。 –

+0

Brilliant!あなたは私に多くの欲求不満を救った:)ありがとう!正直言って、どのように動いているかわからなかったのでAdd〜Row()メソッドが存在することさえ知りませんでした。 –

+1

@Merlyn: 'adapter.Update'は暗黙的に' AcceptChanges'を呼び出します。 http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.update.aspx –

関連する問題