Entity Framework 4.0を使用して、モデルファーストメソッドでデータベースモデルを作成しました。次に、[モデルからデータベースを生成]を使用してSQLスクリプトを作成しました... App_DataフォルダーにSQLServerデータベースファイルも作成しました。このMDFファイルに対してSQLファイルを実行するにはどうすればよいですか?
VisualStudio2010を使用しています。
Entity Framework 4.0を使用して、モデルファーストメソッドでデータベースモデルを作成しました。次に、[モデルからデータベースを生成]を使用してSQLスクリプトを作成しました... App_DataフォルダーにSQLServerデータベースファイルも作成しました。このMDFファイルに対してSQLファイルを実行するにはどうすればよいですか?
VisualStudio2010を使用しています。
私はこれと同じ問題に遭遇しました、そしてこれが私のために働いたものです。
「モデルからデータベースを生成...」を選択すると、新しいMDFファイルが作成されました。このプロセスは正常に機能し、VisualStudioは必要なSQLスクリプトを生成しました。ただし、同じMDFファイルに接続してスクリプトを実行する方法がわかりませんでした。
とても簡単でした。
スクリプトを右クリックして、[接続] >[接続]を選択します
サーバー名と認証は、ローカルSQLEXPRESSインスタンスにすでに設定されている必要があります。
[オプション]ボタンをクリックします
[追加の接続パラメータ]タブをクリックします
以下をガイドとして使用して、データベースファイルへのパスを貼り付けます。
AttachDBFilename = C:\ Path \ To \ Database \ LocalData.mdf; database = LocalData;
[接続]ボタンをクリックします
それでも接続に問題がある場合は、すでに接続が開いていることが原因である可能性があります。サーバーエクスプローラーを確認し、接続が開いている場合は、右クリックして[接続を閉じる]を選択します。
このプロセスでは、SQLスクリプトが接続されている限り、永続的な接続も作成されます。スクリプトを閉じるか、右クリック>[接続]>[切断]を選択します。
詳細については、この質問を参照してください: EF4データベースの生成
私は解決策を見つけましたが、それは少しハッキーです。
SQL Server Express(2008 R2)を使用しています。したがって、モデルからデータベースを生成するときは、モデルに接続して、そこでデータベースを構築します。それから私はに行きC:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA
ます。10_50の部分はバージョンによるものであり、場合によって異なる場合があります。したがって、このフォルダーには、データベースと同じ名前の.mdfファイル(.mdf)があります。_log.ldfファイルもあります。これらをプロジェクトのApp_Dataフォルダーにコピーしました。
これは機能しますが、モデルの変更ごとに新しい.mdfデータベースを生成するのに非常に時間がかかります。だから私は出荷の直前にこれを行います。
より良い答えを見つけたら、共有してください。
同じ問題、EF5を使用したmvc4でのモデルファーストアプローチに遭遇しました。私が行ったことは、プロジェクトを作成し、新しいモデルを追加し、edmx図にエンティティと関連付けを追加することでした。図を右クリックして、[モデルからデータベースを生成]を選択します。これにより、SQLファイルが生成されます。
次に、ソリューションエクスプローラーのApp_Dataフォルダーにmdfファイル(たとえば、Database1.mdf([追加]>[新しいアイテム]>[データ]>[SQL Serverデータベース])を追加します。
右クリック>このmdfファイルを開きます。これで、プロパティペインに接続文字列が表示されます。それをそのままコピーしてください。
生成したSQLスクリプトに戻り、右クリック>[実行]をクリックします。ポップアップが接続パラメータを要求します。サーバー名に正しい値があることを確認してください(PC名または127.0.0.1を使用してください)。
オプションで、[追加の接続パラメーター]タブをクリックし、mdfファイルのプロパティからコピーした接続文字列を貼り付けます。
これは私からは完璧に機能し、非常に論理的です。SQLServerのインストールディレクトリを直接操作する必要はありません。
上記のすばらしい回答ですが、VS2013でさらにいくつかの手順を実行する必要がありましたが、次のようにここで解決しました。
これが誰かに役立つことを願っています-ハッピーコーディング!