我在這裏有這種「神祕」的問題。 我目前正在使用實體框架4.1代碼優先的方法與我的ASP.NET MVC 3應用程序,它工作得很好,直到昨天...實體框架Database.SetInitializer根本不工作
發生了一件非常糟糕的事情,導致我的Database.SetInitializer停止工作。 解釋:
我有這個簡單的模型
public class User
{
public int Id { get; set; }
public int RoleId { get; set; }
[Required]
[StringLength(50)]
[DataType(DataType.Text)]
public string Login { get; set; }
[Required]
[StringLength(150)]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Required]
[StringLength(32)]
[DataType(DataType.Password)]
public string Password { get; set; }
[DataType(DataType.DateTime)]
public DateTime RegisteredDate { get; set; }
public virtual Role Role { get; set; }
}
這裏是我的DbContext
public class MyContext : DbContext
{
public DbSet<Models.User> Users { get; set; }
}
而且我設置的自定義初始化(測試)
public class MyInitializer
: DropCreateDatabaseIfModelChanges<MyContext>
{
}
現在我已經在Web.config中設置連接字符串(名稱與MyContext相同) 所以在Global.asax中我打電話的Application_Start這個簡單的代碼()方法
Database.SetInitializer(new MyInitializer());
但問題是,Database.SetInitializer不會產生任何數據庫,甚至更糟的是,它也甚至沒有試圖填補現有的數據庫從上下文表... 我試圖調試,但它似乎是應用程序只是跳過數據庫的初始化代碼...
我找到了一個解決辦法,就是用這行代碼
var ctx = new MyContext();
ctx.Database.Initialize(true);
所以在這裏,我只是強制代碼來創建DB無論如何...
但事實Database.SetInitializer不會工作真的很煩人......它以前工作得很好,我不知道發生了什麼事。 我看着Windows事件日記,SQL服務器日誌...但沒有任何東西。只是沉默。 但也許我只是看錯了地方? :S
有人可以告訴我發生了什麼事嗎?
P.S我使用的Visual Web Developer 2010 + SQL Server Express的2008 R2
是的,它的工作....謝謝。我真的忘了所有那些「懶加載」的東西。 :) – geCoder 2011-06-16 08:00:56