データベース ファースト アプローチを使用するために、EF を使用して新しい MVC プロジェクトを作成したいと考えています。
そこで、デフォルトのアカウントを作成し、ユーザーのモデル、コントローラー、およびビューを管理するウィザードを使用して、Visual Studio 2015 で新しい MVC 5.2.3 プロジェクトを作成しました。
接続文字列は一種の
Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MyProject-20161112112119.mdf;Initial Catalog=aspnet-MyProject-20161112112119;Integrated Security=True" providerName="System.Data.SqlClient
そして、私はここにいくつかの問題があります:
App_Data
プロジェクトのフォルダー内に mdf ファイルがないため、データベースがどこに行ったのかわかりません。アプリはデフォルトでコードファーストアプローチを使用していると思うので、明らかに変更したいと思います。アイデアは、セットアップ時に作成された内部プロジェクト db 内からテーブルをコピーし、db 最初のアプローチで使用する新しいデータベースに追加することです。しかし、既存のアプリ データベースが見つかりません (ポイント 1 を参照)。
上記の connstring で使用されているサーバー (
(LocalDb)\MSSQLLocalDB
) に Management Studio 経由で接続できますが、conn string で言及されているものでさえデータベースがまったくありません。そして、ファイルはApp_Data
フォルダ内に存在しませんMyProjectDb
そのため、SQL Server Management Studio を使用してサーバー内に新しいデータベースを作成しlocalhost
、db first アプローチに使用するつもりでした。MyProject.Database
新しく作成したデータベースを使用するために、ソリューション内に新しいプロジェクトを作成しましたMyProjectDb
。プロジェクトプロパティのデータベース文字列に、ではなく
MyProject.Database
connstring データソースが含まれていることを確認しました。問題は、なぜ私のものではなく、そのような奇妙なソースなのですか? そして、新しいdbプロジェクトにサーバー内にデータベースを作成させる方法は?(LocalDb)/ProjectsV13
localhost
localhost
localhost
次に、データベース プロジェクト ([デバッグ] タブ) のプロパティを変更して、接続文字列
localhost
でデータソースとして使用し、新しいデータベースMyProjectDb
を作成しました。次に、データベース プロジェクトを右クリックします
MyProject.Database
: [追加] > [新しいアイテム] > [テーブル]。テーブルを作成しました。SQL Server オブジェクト エクスプローラーの
Projects-MyProject
フォルダーの下にデータベースが表示され、 SQL Server Management Studio 内のサーバーのMyProjectDb
下に作成したデータベースが表示されるようになりました。localhost
前者には私が作成したテーブルがあり、後者には [テーブル] の下にありません (もちろんテーブルを更新しました)。これは奇妙で、実際に同じデータベースなのか、VS が作成したデータベースを使用する代わりにデータベースをコピーしたのか混乱していますか?ソリューション エクスプローラーで Web プロジェクトを右クリックします。[追加] > [新しい項目] > [データ] > [ADO.NET Entity Data Model] で名前を指定し、次の画面で
EF Designer from database
オプションを選択します。[次へ] をクリックして、作成できる画面に移動しますNew connection
。これをクリックすると、リストから選択できるサーバーはNICKO-PC
サーバーだけです。(覚えておいてください:VSで作成したdbプロジェクトはデフォルトで(LocalDb)?ProjectsV13
サーバーに設定されていました)挿入しようとすると、localhost
元に戻りますが、データベースがリストにある利用可能なデータベースを展開すると、とにかくサーバーcosNICKO-PC
と同じだと思います。だから私はそれを選択して次に進みます。localhost
MyProjectDb
画面が出
Choose Your Database Objects And Settings
ます。そして今、自分のMyProject.Database
プロジェクトを使用して作成したテーブルが表示されません。より正確にするために選択するテーブルはありません。したがって、アプリケーションで使用する db エンティティを作成できないことは明らかです。
ハマった。
イベントの説明が混乱しないことを願っています。
賢い人が私がやりたいことをするのを手伝ってくれますか?
Web プロジェクトが奇妙なサーバーで db ファイルを使用し、代わりに
(LocalDb)\MSSQLLocalDB
データベース プロジェクトがそれを作成する理由がわかりません。(LocalDb)/ProjectsV13
独自の新しいデータベースを作成し、それを Web アプリとデータベース プロジェクトの両方に使用してから、データベース ファースト アプローチに基づいてエンティティを作成するにはどうすればよいですか?
データ エンティティ ウィザードでテーブルやその他のオブジェクトを取得する方法 アプリ内でモデル エンティティを作成したいのですが?
これは基本的に私が必要とするものです。
Db First アプローチを使用してプロジェクトを作成する方法を教えてください。VS スタジオ ウィザードではどこにも行けません。
ありがとうございました
* 編集 *
私の DbContext クラスはかなり単純で、ユーザー モデルと一緒にインストールした MVC プロジェクトによって作成されます。
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
新しく作成した db に接続するために変更したことがわかるように、デフォルトの conn 文字列を指していますMyProjectDb
。