4

私は、基本的な「モデルファースト」エンティティフレームワークの例を作成する最も簡単な方法を見つけるために一生懸命努力しています。ただし、実際のデータベースの生成、特にデータベースに対するSQLの実行に苦労しています。

ツール

  • Visual Studio 2010
  • SQL Server 2008 Express

プロセス

  1. 新しいクラスプロジェクトを作成する
  2. 「Database1.mdf」という名前の新しいサーバーデータベースアイテム(mdf)をプロジェクトに追加します
  3. 空のADO.netエンティティモデルを追加します
  4. 単純なエンティティを作成します(個人:ID、名前)
  5. VisualStudioによって作成されたDatabase1接続を選択してスクリプトを生成します
  6. スクリプトエディタを右クリックして、[SQLの実行...]オプションを選択します
  7. SQLEXPRESSにログインします

これは、データベース名「Database1」が見つからないと言って転倒する場所です。

「問題」は、SQLサーバーにDatabase1が接続されていないことです。Visual Studioが新しいデータベースを作成したときにデータベースをSQLExpressに接続するために使用することを100%確信しています(ステップ2)。これはもはや当てはまらないようです(VS2010のベータ版でさえそうしました)。誰かがこれを確認できますか?またはこれを実現する方法を教えてください。

接続されていないデータベースを使用するようにTSQLスクリプトを変更する方法はありますか?つまり、ファイルです。

SQL Management Studioまたはsqlcmdを使用してデータベースを接続できることはわかっていますが、Visual Studioを使用する最もクリーンな方法を見たいので、ソリューションを避けたいと思います。

理想的なソリューション(最も好ましい順に)

  1. Visual Studioを入手して、新しく作成したデータベースを接続します
  2. 生成されたSQLをファイルを指すように変更します

前もって感謝します。

4

4 に答える 4

2

(少なくともVS2010とSQLServer(2008 | 2008 R2)Expressで)一貫して機能することがわかった方法は次のとおりです。

  1. ADO.NETエンティティモデルを作成する
  2. .mdfデータベースを作成しますが、それにテーブルを追加しないでください
  3. サーバーエクスプローラーから接続文字列をコピーします->接続の変更->詳細(下の行)
  4. サーバーエクスプローラーで接続を閉じます
  5. 「モデルからデータベースを生成」を使用してSQLスクリプトを生成します
  6. SQLスクリプトがエディターで開いたら、[接続]をクリックし、[オプション]-> [追加の接続パラメーター]に移動して、接続文字列をここに貼り付けます。;Database=DATABASENAME;また、接続文字列の最後に「」を追加します。
  7. SQLを実行する
  8. VisualStudioを切断して再起動します
  9. これで、.mdfファイルのツリーコントロールを展開した後、サーバーエクスプローラーでテーブルを使用できるようになります。

私はプロセスを実際に最適化していないので、おそらくすべてのステップが必要なわけではありません(特に上記の正確な順序ではありません)-それが機能する場合は、修正しないでください。:-) 1つの重要なステップは#8のようです。つまり、Visual Studioを再起動します。そうしないと、サーバーエクスプローラーがデータベースを再度開くことができないためです。

于 2010-11-19T19:20:14.030 に答える
1

HighTechRiderのおかげで、サーバーエクスプローラーでDataConnection用に作成された接続文字列には、実際に「AttachDBFilename」パラメーターが含まれていました。

しかし、このアイデアは私に何か他のことを試させてくれました。

上記と同じ手順に従って、sqlexpressへのログイン手順で別のことを行いました。今回は、Connect to Database Engine画面で[その他のオプションを表示]ボタンをクリックして、[追加の接続パラメーター]タブに移動しました。

ここに追加しましAttachDBFilename=c:\src\mydatabasehome\Database1.mdf;database=Database1;た。注私はフルパスを使用しましたが、AttachDbFilename=|DataDirectory|\Database1.mdf

これにより、データベースに対して問題なくSQLが実行されました。

次に、サーバーエクスプローラーに戻り、データベース接続を拡張して新しいテーブルを表示できるようにしましたが、接続に失敗しました。少しおならをした後、なんらかの理由で、「データベースエンジンへの接続」画面を使用してSQLExpressインスタンスに接続すると、AttachDBFilenameで指定したデータベースファイルが実際に永続的な接続を確立したことがわかりました。したがって、このデータベースはすでに接続されているため、以前の接続文字列(AttachDBFilenameパラメーターを使用)は無効になりました。

そこで、その接続を削除し、「database1」という名前のデータベースが含まれているSQLServerへの新しい接続を直接作成して選択しました。

今ではすべてうまくいったと思います。

これは奇妙なプロセスであり、私にとっては確かに予想外だったので、誰かが何が起こっているのかを説明したいのであれば、私は確かにそれを感謝します。今のところ、私には(少し奇妙なことでも)自分がやりたいことをする方法があります。より良い解決策がありがたいです。

これが誰かを助けることを願っています。

于 2010-05-07T04:52:45.123 に答える
0

接続文字列はどのように見えますか?AttachDbFilename接続文字列にを入れてみましたか?

于 2010-05-06T07:39:38.347 に答える
0

「追加接続パラメータ」タブはどこにありますか?[詳細設定]タブしかありませんが、添付ステートメントをどこに追加したかが明確ではありません。

于 2010-05-21T01:21:23.903 に答える