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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.93575 の関連記事表示

<< 0 >>
■93575  コードファーストでDBが作成されない
□投稿者/ QQ -(2019/12/23(Mon) 18:02:55)

    分類:[ASP.NET (C#)] 

    お世話になります。

    VS2017にてASP.NET MVC+EntityFramework6のプロジェクトを作成しようとしているのですが、
    コードファーストにてSQLServerにDBを作成しようと、モデルを作成しビルドをしているのですが、
    DBが作成されない状態です。
    特にビルドエラーも出ておりません。

    どのような原因が考えられますでしょうか?
    以下の3点では記述が足りないのでしょうか?


    ■モデル
    public class User
    {
    public int UserId { get; set; }
    public string UserName { get; set; }
    }

    ■DBコンテキスト
    public class TestContext: DbContext
    {
    public DbSet<User> Users { get; set; }
    }

    ■Web.config
    <connectionStrings>
    <add name="TestContext"
    connectionString="Data Source=localhost\SQLEXPRESS;
    Initial Catalog=TestDb;
    Persist Security Info=True;
    User ID=sa;
    Password=;
    MultipleActiveResultSets=True;
    Application Name=EntityFramework"
    providerName="System.Data.SqlClient" />
    </connectionStrings>

親記事 /過去ログ162より / 関連記事表示
削除チェック/

■93576  Re[1]: コードファーストでDBが作成されない
□投稿者/ WebSurfer -(2019/12/23(Mon) 18:22:39)
    No93575 (QQ さん) に返信

    > どのような原因が考えられますでしょうか?
    > 以下の3点では記述が足りないのでしょうか?

    接続文字列が間違っているのですが、それが原因なのか断定できるの情報が
    ないです。

    一度以下のチュートリアルに従ってコンソールアプリで DB を作ってみてく
    ださい。SQL Server Express がインストールしてあれば、Code First の既
    定に従って DB が生成されるはずです。

    新しいデータベースへの Code First
    https://docs.microsoft.com/ja-jp/ef/ef6/modeling/code-first/workflows/new-database
記事No.93575 のレス /過去ログ162より / 関連記事表示
削除チェック/

■93577  Re[2]: コードファーストでDBが作成されない
□投稿者/ QQ -(2019/12/23(Mon) 18:46:06)
    2019/12/23(Mon) 19:08:44 編集(投稿者)

    No93576 (WebSurfer さん) に返信
    > 一度以下のチュートリアルに従ってコンソールアプリで DB を作ってみてく
    > ださい。SQL Server Express がインストールしてあれば、Code First の既
    > 定に従って DB が生成されるはずです。

    やってみました。
    SQLServerオブジェクトエクスプローラーの中のlocaldbの中にDBが作成されました。
    となると接続情報の書き方の問題なのでしょうか?

    一応、コードファーストではない別プロジェクトで接続できている記述内容でしたので
    間違いがピンと来ない状況です。。

    ちなみに、SQL Server 2012 Expressがインストール済みです。
記事No.93575 のレス /過去ログ162より / 関連記事表示
削除チェック/

■93580  Re[3]: コードファーストでDBが作成されない
□投稿者/ WebSurfer -(2019/12/23(Mon) 19:55:01)
    No93577 (QQ さん) に返信

    > となると接続情報の書き方の問題なのでしょうか?

    それだけが問題なのか分かりませんが、とにかく接続文字列が間違ってます。
    そこをまず勉強した考えてみることをお勧めします。

    接続文字列の書き方に自信ができたら、以下の記事を参考にコンテキストクラ
    スの定義に接続文字列を指定して、指定した通りの場所に DB が生成されるか
    調べてみてください。

    接続文字列とモデル
    https://docs.microsoft.com/ja-jp/ef/ef6/fundamentals/configuring/connection-strings
記事No.93575 のレス /過去ログ162より / 関連記事表示
削除チェック/

■93585  Re[3]: コードファーストでDBが作成されない
□投稿者/ WebSurfer -(2019/12/24(Tue) 09:35:27)
記事No.93575 のレス /過去ログ162より / 関連記事表示
削除チェック/

■93590  Re[4]: コードファーストでDBが作成されない
□投稿者/ QQ -(2019/12/24(Tue) 12:00:39)
    No93585 (WebSurfer さん) に返信

    まず、接続文字列については、投稿の際に余計な「"」が追加されてしまってました。
    こちらは実際にはありません。

    > MVC 5 を使用する Entity Framework 6 Code First の概要
    > https://docs.microsoft.com/ja-jp/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/

    そして、教えて頂いた記事や、上記チュートリアルをやってみました。
    どうやら勘違い(?)をしていたようで、モデル+DBコンテキスト+接続情報
    の3つを作成してビルドすればDBが作られるものと思っていたのですが、
    モデルをベースとしたコントローラー+ビューを作成してブラウザ表示したところDBが作成されました。

    モデルが使用される機能を初めて実行した際にDBが作成されるという理解であっているのでしょうか?
    (大抵の記事がCRUDありのビューまで作ってからの実行のようで、具体的なタイミングが分かりませんでした。)


記事No.93575 のレス /過去ログ162より / 関連記事表示
削除チェック/

■93591  Re[5]: コードファーストでDBが作成されない
□投稿者/ WebSurfer -(2019/12/24(Tue) 14:06:18)
    No93590 (QQ さん) に返信

    > まず、接続文字列については、投稿の際に余計な「"」が追加されてしまってました。
    > こちらは実際にはありません。

    接続文字列ですが、まず localhost は (local) とするのが Microsoft の推奨です。

    Windows 認証を使っていると理解していますが、その場合 SQL Server 認証で使う User ID,
    Password は不要です。

    Application Name というのも不要だと思います。

    接続できたそうですので間違いとは言えないかもしれませんが、Microsoft のドキュメント
    に従って書いた方がよさそうです。

    > どうやら勘違い(?)をしていたようで、モデル+DBコンテキスト+接続情報
    > の3つを作成してビルドすればDBが作られるものと思っていたのですが、
    > モデルをベースとしたコントローラー+ビューを作成してブラウザ表示したところDBが作成されました。

    接続文字列は指定してなければ EF Code First の規約にしたがって EF が生成しますが、
    コンテキストクラスは必須です。

    ただし、接続文字列をEF 任せにするのは問題あるはずで(特に運用環境に移す際)、
    普通は web.config に書いてコン
    テキストクラスのコンストラクタに指定しそれが使われるようにします。

    > モデルが使用される機能を初めて実行した際にDBが作成されるという理解であっているのでしょうか?

    その理解で良いと思います。一番最初に紹介した記事でもそれが分かると思います。
記事No.93575 のレス /過去ログ162より / 関連記事表示
削除チェック/

■93598  Re[5]: コードファーストでDBが作成されない
□投稿者/ WebSurfer -(2019/12/25(Wed) 10:06:26)
記事No.93575 のレス /過去ログ162より / 関連記事表示
削除チェック/

■93601  Re[6]: コードファーストでDBが作成されない
□投稿者/ QQ -(2019/12/25(Wed) 10:57:06)
    2019/12/25(Wed) 11:03:27 編集(投稿者)

    No93598 (WebSurfer さん) に返信

    返信が遅くなりました。
    ドキュメント、日本語、英語を合わせて読んでみました。

    最終的に以下のようにしました。(SQL認証でした。)
    <connectionStrings>
    <add name="TestContext"
    connectionString="Data Source=(local)\SQLEXPRESS;
    Initial Catalog=TestDb;
    User ID=sa;
    Password=;"
    providerName="System.Data.SqlClient" />
    </connectionStrings>

    勉強になりました!
    ありがとうございました!
記事No.93575 のレス /過去ログ162より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -