私は、数時間の冒険に変わった一見単純なタスクを完了しようとしてい@@Identity
ますTableAdapter.Insert()
。
これが私のコードです:
protected void submitBtn_Click(object sender, EventArgs e)
{
AssetsDataSetTableAdapters.SitesTableAdapter sta = new AssetsDataSetTableAdapters.SitesTableAdapter();
int insertedID = sta.Insert(siteTxt.Text,descTxt.Text);
AssetsDataSetTableAdapters.NotesTableAdapter nta = new AssetsDataSetTableAdapters.NotesTableAdapter();
nta.Insert(notesTxt.Text, insertedID, null,null,null,null,null,null);
Response.Redirect("~/Default.aspx");
}
1つの答えは、私がしなければならないのはを変更することだけだということを示唆していますExecuteMode
。やってみました。これによりGetData()
、動作を停止します(rowdataの代わりにスカラーを返すため)(GetData()を保持する必要があります)。また、insertedID変数がまだ1に設定されているという問題も解決しません。
TableAdapter
で秒を作成し、TypedDataSet.XSD
そのアダプタのプロパティを「スカラー」に設定しようとしましたが、変数が値1を取得しても失敗します。
生成された挿入コマンドは
INSERT INTO [dbo].[Sites] ([Name], [Description]) VALUES (@Name, @Description);
SELECT Id, Name, Description FROM Sites WHERE (Id = SCOPE_IDENTITY())
また、「データテーブルの更新」(IDを取得するためのInsertステートメントとUpdateステートメントの後にselectステートメントを追加する)も設定されています。
環境
SQL Server 2008 R2、Visual Studio 2010、.NET 4、Windows XP、すべてローカルの同じマシン。
これは何が原因ですか?
編集/更新
VisualStudio内で自動生成されたコードを使用していることを明確にしたい。コードを生成した「ツール」が何であるかはわかりませんが、*。XSDファイルをダブルクリックすると、SQLテーブルスキーマと関連するTableAdapterのUIが表示されます。自動生成されたコードを使い続け、どういうわけかIDの取得を有効にしたい。ストアドプロシージャを使用して、これをすべて手作業で記述したくありません。