そこで出るメッセージは、 「Model compatibility cannot be checked because the database does not contain model metadata. Ensure that IncludeMetadataConvention has been added to the DbModelBuilder conventions.」 ググってみると幾つかヒットしますが、要は、ここで行っている方法では、読めないとか正しいコード?(メタデータ)がない、っていうことのようです。
1.public DbSet<Holter> Holters { get; set; }の<>内の名前に***.mdfの***だと思ってましたが、その中のテーブル名でした。(思い違い) namespace Holterweb.Models { public class HolterContext : DbContext { public DbSet<Holter> Holters { get; set; } <- <ここは、テーブル名だった> } }
2.Web.Configが下記だと「Model compatibility cannot be checked because the database does not contain model metadata. Ensure that IncludeMetadataConvention has been added to the DbModelBuilder conventions.」 <add name="HolterContext" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Holter.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
分類:[ASP.NET]
お世話になります。
MVC3を使ってWebアプリを勉強しています。(aspxでなくrazorを利用)
ここで、Model内でのDBにアクセスする内容がよくわかりません。
参考にしたサイトは、「http://d.hatena.ne.jp/shiba-yan/20110208/1297096899」で、リポジトリパターンを利用してアクセスしようとしています。これを選択した理由は、ありませんが、たまたま読んでいた、わかりやすかったページがこの方式だったということです。
そこで出るメッセージは、
「Model compatibility cannot be checked because the database does not contain model metadata. Ensure that IncludeMetadataConvention has been added to the DbModelBuilder conventions.」
ググってみると幾つかヒットしますが、要は、ここで行っている方法では、読めないとか正しいコード?(メタデータ)がない、っていうことのようです。
では、その部分は、どこにあるのでしょか?なにやら、サンプル内では、自動で「Select・・・」が作られているみたいですが・・・・
このアプリでは、すでに存在するファイル「***.mdf」を読みだしたいです。
Web.config
<connectionStrings>
<add name="HolterContext"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Holter.mdf;User Instance=true"
providerName="System.Data.SqlClient"/>
protected void Application_Start()
{
:
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<HolterContext>());
}
namespace Holterweb.Models
{
public class HolterContext : DbContext
{
public DbSet<Holter> Holters { get; set; }
}
}
namespace Holterweb.Models
{
public class HolterRepository : IDataRepository
{
private readonly HolterContext _context = new HolterContext(); <- ここが最初に呼ばれる
次に下記が呼ばれて
public class HolterController : Controller
{
public HolterController(): this(new HolterRepository())
{
// ここで、元コードは、Select・・があるようですが、
// 私のコードは、なく上記エラーメッセージが見られる。
}
public HolterController(IDataRepository videoRepository)
{
_videoRepository = videoRepository;
}
private readonly IDataRepository _videoRepository;
public class Holter
{
[Key]
public int No { get; set; }
//[Required]
[DisplayName("顧客名")]
public string UserID { get; set; }
:
長文で失礼しました。よろしくお願いします。