C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: LINQ Insertで、挿入値がデータベースに追加されない


(過去ログ 95 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■56666 / inTopicNo.1)  LINQ Insertで、挿入値がデータベースに追加されない
  
□投稿者/ taz (1回)-(2011/01/25(Tue) 16:29:41)

分類:[C#] 

こんにちは。

Visual Studio 2010 Express C#、SQL Server 2005 を使用して、プログラムを作成してます。

サービスベースのデータベースを追加。
Table1 を追加。IDカラムを主キーとして作成。 
LinQ to SQL クラス DataClasses1.dbmlを追加。
Table1 を、DataClasses1.dbmlにドラッグ&ドロップ。
ボタンとテキストボックスを配置。

コードは以下のとおりです。

private void button1_Click(object sender, EventArgs e)
{
var insertContext = new DataClasses1DataContext();
Table1 a = new Table1();
a.ID = Convert.ToInt32(textBox1.Text);
insertContext.Table1.InsertOnSubmit(a);
insertContext.SubmitChanges();
}

エラーは出ませんが、データベースにデータが追加されません。

どなたかアドバイスお願いします。
引用返信 編集キー/
■56667 / inTopicNo.2)  Re[1]: LINQ Insertで、挿入値がデータベースに追加されない
□投稿者/ shu (381回)-(2011/01/25(Tue) 16:42:04)
No56666 (taz さん) に返信

『Table1 a』と『insertContext.Table1』は
別物なのでは。
引用返信 編集キー/
■56670 / inTopicNo.3)  Re[2]: LINQ Insertで、挿入値がデータベースに追加されない
□投稿者/ マサヤ (229回)-(2011/01/25(Tue) 17:47:12)
Table1のスキーマも気になります。
引用返信 編集キー/
■56676 / inTopicNo.4)  Re[3]: LINQ Insertで、挿入値がデータベースに追加されない
□投稿者/ taz (2回)-(2011/01/25(Tue) 18:07:14)
2011/01/25(Tue) 18:08:50 編集(投稿者)

No56670 (マサヤ さん) に返信
> Table1のスキーマも気になります。

主キーint型のIDカラムのみの単テーブルです。
引用返信 編集キー/
■56677 / inTopicNo.5)  Re[1]: LINQ Insertで、挿入値がデータベースに追加されない
□投稿者/ 魔界の仮面弁士 (2033回)-(2011/01/25(Tue) 19:11:15)
No56666 (taz さん) に返信
> コードは以下のとおりです。
コードに問題は無いと思います。

> サービスベースのデータベースを追加。
SQL Server の mdf や、SQL Server Compact の sdf ファイルを
ソリューション内に含めているという事ですよね。

もしかして、毎回 exe を作るたびに、EXE の出力先にあるデータベースファイルを、
空の Table1 で上書きしてしまっているのでは無いでしょうか。

ソリューション エクスプローラーでそのファイルを選択し、プロパティの
[出力ディレクトリにコピー]と[ビルド アクション]の設定を確認してみてください。
引用返信 編集キー/
■56679 / inTopicNo.6)  Re[2]: LINQ Insertで、挿入値がデータベースに追加されない
□投稿者/ taz (3回)-(2011/01/25(Tue) 20:23:46)
No56677 (魔界の仮面弁士 さん) に返信

> もしかして、毎回 exe を作るたびに、EXE の出力先にあるデータベースファイルを、
> 空の Table1 で上書きしてしまっているのでは無いでしょうか。

Table1 には、1,3,5等のデータが入っています。プログラムを実行しても変化がありませんが、
この状態が空のTable1 で上書きしているのでしょうか?

> ソリューション エクスプローラーでそのファイルを選択し、プロパティの
> [出力ディレクトリにコピー]と[ビルド アクション]の設定を確認してみてください。

test.mdf がファイル名ですが、プロパティは、
[出力ディレクトリにコピー] = 常にコピーする → 新しい場合はコピーする コピーしない
[ビルド アクション] = コンテンツ → 色々
 
等、試してみましたが

【ファイル C:\Documents and Settings\*\my documents\visual studio 2010\Projects\database04\database04\bin\Debug\test.mdf の自動的に名前が付けられたデータベースをアタッチできませんでした。同じ名前のデータベースが既に存在するか、指定されたファイルを開けないか、UNC 共有に配置されています。】

上記エラーが出ます。
引用返信 編集キー/
■56680 / inTopicNo.7)  Re[3]: LINQ Insertで、挿入値がデータベースに追加されない
□投稿者/ 魔界の仮面弁士 (2034回)-(2011/01/25(Tue) 20:39:42)
2011/01/25(Tue) 20:43:58 編集(投稿者)

No56679 (taz さん) に返信
> Table1 には、1,3,5等のデータが入っています。プログラムを実行しても変化がありませんが、
> この状態が空のTable1 で上書きしているのでしょうか?
元ファイルが空なら、実行直後も空になりますし、
元ファイルの中身が「1,3,5」なら、実行直後も「1,3,5」になるはずです。

プロジェクトフォルダとexeの配置フォルダのファイルの更新日やサイズを比較してみてください。
具体的には、database04\test.mdf のファイルと、
出力先の database04\bin\Debug\test.mdf ファイルです。
(ついでにdatabase04\bin\Release\test.mdf も)


> [出力ディレクトリにコピー] = 常にコピーする → 新しい場合はコピーする コピーしない
> [ビルド アクション] = コンテンツ → 色々
> 等、試してみましたが
それぞれの意味は分かりますか?

[ビルド アクション]
・コンパイル → 主に cs ファイルに対して利用される。
・コンテンツ → データファイルなどに利用。exe と同じフォルダにそのままコピーされる。
・埋め込まれたリソース → exe 内部にそのデータを埋め込む。
・なし → 別ツールで処理されるファイルや、開発用資料などに対して使う。


そして [出力ディレクトリにコピー] は、上記『コンテンツ』に対して
ビルド時にそのファイルをどのようにコピーするかを示しています。
・常にコピーする → 出力先フォルダ内のファイルをプロジェクト内のファイルで置き換えます。
・新しい場合はコピーする → ファイルの更新日を比較して、プロジェクト内のフォルダの方が新しい場合にだけコピーします。出力先のファイルの方が新しい場合は何もしません。
・コピーしない → 何もしません。既に同名ファイルがあった場合は削除される可能性があります。

> 上記エラーが出ます。
そのエラーは、mdf ファイルが見つからない場合などに発生します。
mdf ファイルが出力先フォルダに配置されない設定にしていませんか?
引用返信 編集キー/
■56681 / inTopicNo.8)  Re[4]: LINQ Insertで、挿入値がデータベースに追加されない
□投稿者/ shu (382回)-(2011/01/25(Tue) 21:28:49)
もしかしてプロジェクト内にあるmdfファイルの中身が変わってないからInsertが動作していないと
判断したということですか?
実行フォルダ内のファイルで確認しないと駄目ですでよ?
引用返信 編集キー/
■56815 / inTopicNo.9)  Re[5]: LINQ Insertで、挿入値がデータベースに追加されない
□投稿者/ taz (4回)-(2011/02/01(Tue) 17:32:04)
返信遅くなりました。

詳しく教えて頂き、ありがとうございました。非常に勉強になります。また宜しくお願いします。
引用返信 編集キー/
■56817 / inTopicNo.10)  Re[6]: LINQ Insertで、挿入値がデータベースに追加されない
□投稿者/ taz (5回)-(2011/02/01(Tue) 17:33:24)
閉じます。
解決済み
引用返信 編集キー/
■56825 / inTopicNo.11)  Re[7]: LINQ Insertで、挿入値がデータベースに追加されない
□投稿者/ επιστημη (2598回)-(2011/02/02(Wed) 05:01:31)
επιστημη さんの Web サイト
消化不良...結局何がイケなかったんだろう。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -