我在一個簡單的MVC3應用程序中首先使用EF4代碼。 上下文對象正在拾取正確的連接字符串,並且會調用初始化程序構造函數,就像OnModelCreating方法一樣,但從未調用種子方法並且未創建數據庫。任何想法爲什麼?未創建實體框架數據庫
protected void Application_Start()
{
Database.SetInitializer<SchoolContext>(new SchoolInitializer());
SchoolContext context = new SchoolContext();
context.Database.CreateIfNotExists();
...
}
public class SchoolInitializer : DropCreateDatabaseAlways<SchoolContext>
{
public SchoolInitializer()
{
}
protected override void Seed(SchoolContext context)
{
var students = new List<Student>
{
new Student {StudentId = Guid.NewGuid(), Name = "Carson" },
new Student {StudentId = Guid.NewGuid(), Name = "Meredith" }
};
students.ForEach(s => context.Students.Add(s));
context.SaveChanges();
}
}
public class Student
{
[Key]
public Guid StudentId;
public string Name;
}
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
配置:
<connectionStrings>
<add name="SchoolContext" connectionString="Data Source=|DataDirectory|School.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
引發的異常,我認爲只是抱怨數據庫尚未建立:
[ModelValidationException:是模型中檢測到一個或多個驗證錯誤代:
.Data.Edm.EdmEntityType::EntityType'Student'沒有定義鍵。定義此EntityType的關鍵字。 System.Data.Edm.EdmEntitySet:EntityType:EntitySet Students 基於沒有定義鍵的類型 Student 。
看起來像你應該爲學生定義一個PK。我假設你有你的模型之間的關係。此外,它明確指出「ModelValidationException」而不是「DatabaseValidationException」。 IT是一個模型問題,而不是數據庫問題。 –
您確定要使用EF與sdf文件而不是常規數據庫嗎? – abatishchev