私は学ぼうとしていますEF Code first
。最初に、ModelClass で DataAnnotation を使用してすべての制約を試しました。そして、仕事は順調です。
しかし、今はFluent API
スタンドアロン構成ファイルを使用して同じことを試みていますが、データベースを再作成できず、このエラーをスローします
データベースにモデル メタデータが含まれていないため、モデルの互換性を確認できません。モデルの互換性は、Code First または Code First Migrations を使用して作成されたデータベースに対してのみ確認できます。
これが私のモデルです
public Class User
{
public string UserID { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
これが私のDbContextです
public class AppContext : DbContext
{
public DbSet<User> Users { get; set; }
//Public constructor to Call DropCreateDatabaseIfModelChanges method
public AppContext()
{
//Calling the Method to ReCreate the database
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<AppContext>());
}
//Overriding OnModelCreating Method to Configure the Model using Fluent API
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configuration.Add(new UserConfiguration());
}
}
ここに私のUserConfigurationクラスがあります
public class UserConfiguration : EntityTypeConfiguration<User>
{
public UserConfiguration()
{
//Using Fluent API to configure Model
HasKey(x => x.UserID);
Property(x => x.Username).IsRequired().HasMaximumLength(50);
Property(x => x.Password).IsRequired().HasMaximumLength(50);
}
}
どこが間違っているのかわかりません。どんな提案でも結構です。
注:EF 4.3.1を使用しています
編集メソッドに構成を直接配置すると、うまく機能します
。Fluent API
OnModelCreating
//Overriding OnModelCreating Method to Configure the Model using Fluent API
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Instead of Standalone Configuration file
//modelBuilder.Configuration.Add(new UserConfiguration());
//putting configuration here only
modelBuilder.Entity<User>().HasKey(x => x.UserID);
modelBuilder.Entity<User>().Property(x => x.Username).IsRequired().HasMaximumLength(50);
modelBuilder.Entity<User>().Property(x => x.Password).IsRequired().HasMaximumLength(50);
}
ただし、スタンドアロン構成ファイル、つまりクラスで機能しない理由はわかりません。何かUserConfiguration
提案をお願いします