2012年2月10日金曜日

ASP.NET MVC3 EF Modelからデータベースが作成できない

以下のサイトを参考にASP.NET MVC3 EF Code First を学習しています。

@IT ASP.NET MVC入門【バージョン3対応】

ところがModelからデータベースを作成するところで、以下のようなエラーが出てしまいつまづいてしまいました。

Model compatibility cannot be checked because the database does not contain model metadata. Ensure that IncludeMetadataConvention has been added to the DbModelBuilder conventions.
記事の中で
なお、本稿ではSQL Server Compact 4.0を前提としているので、プロバイダ名は「System.Data.SqlServerCe.4.0」としているが、従来のSQL Serverに接続するならば、「System.Data.SqlClient」とすればよい。
とあったので、

  <connectionStrings>
    <add name="MyMvcContext"
         connectionString="Data Source={servername};
                           Initial Catalog={dbname};
                           Integrated Security=True"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

web.configの記述を上記のようにしたのですが、
この時にデータベース名(上記{dbname}の部分)に
既存のデータベースを指定したのが問題だったようです。
未作成のデータベースを指定することで、解決致しました。

ただし、完全にCodeFirstでデータベースを作成できる場合は良いのですが、
別口からデータベースを操作したり、既存のデータベースとの連携だったり
下記[参考]にあるようにMembership Providerとの連携だったりを考えた場合に
ちゃんと動くのか心配です。
自分はまだ学習段階なのでおいおい解決することを期待・・・。

[参考]
EF 4.1 Code First and Existing Database and .NET Membership
mvc3 code-first error on sqlexpress

0 件のコメント:

コメントを投稿