我正在嘗試學習EF Code first
。最初,我已經使用ModelClass上的DataAnnotation嘗試了所有約束。工作很好。
但現在我想使用相同隨着Fluent API
獨立的配置文件,但它無法重新創建數據庫,並拋出這個錯誤無法使用EF-Code首先重新創建數據庫
型號的兼容性無法進行檢查,因爲該數據庫不包含模型元數據。只能使用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
class。任何建議請
刪除舊數據庫並重試。 –
@LadislavMrnka我已經嘗試過,但沒有運氣。 :( – Vivek
@GertArnold感謝您的編輯 – Vivek