2013-02-05 73 views
2

由於數據庫初始化失敗,我不得不停止在不同的MVC 4代碼優先技術教程之後的相同階段。MVC 4代碼優先數據庫初始化不起作用

使用連接

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-DbTestApp-20130205173443;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-DbTestApp-20130205173443.mdf" providerName="System.Data.SqlClient" /> 

我甚至無法創建或管理的數據庫,我想可以用以下

public class BlogContext : DbContext 
    { 
     public DbSet<Category> Categories { get; set; } 
     public DbSet<Article> Articles { get; set; } 
     public DbSet<Author> Authors { get; set; } 
     public DbSet<Comment> Comments { get; set; } 

     public BlogContext() 
      : base("DefaultConnection") 
     { 
      Configuration.ProxyCreationEnabled = false; 
     } 
    } 
的背景下,從我的模型

public class Category 
    { 
     public int Id { get; set; } 

     [Required] 
     [MinLength(4)] 
     [MaxLength(64)] 
     public string Name { get; set; } 

     public virtual IEnumerable<Article> Articles { get; set; } 
    } 

    public class Article 
    { 
     public int Id { get; set; } 

     public int CategoryId { get; set; } 
     public virtual Category Category { get; set; } 

     [Required] 
     [MinLength(4)] 
     [MaxLength(64)] 
     public string Title { get; set; } 

     [Required] 
     [MinLength(16)] 
     [MaxLength(1024)] 
     [DataType(DataType.MultilineText)] 
     public string Content { get; set; } 

     [Required] 
     [Display(Name = "Post Anonymous?")] 
     public bool IsAnonymous { get; set; } 

     public int AuthorId { get; set; } 
     public virtual Author Author { get; set; } 

     public virtual IEnumerable<Comment> Comments { get; set; } 

    } 

    public class Author 
    { 
     public int Id { get; set; } 

     [MinLength(3)] 
     [MaxLength(64)] 
     public string AuthorName { get; set; } 

     public virtual IEnumerable<Article> Articles { get; set; } 

     public virtual IEnumerable<Category> Categories { get; set; } 
    } 

    public class Comment 
    { 
     public int Id { get; set; } 

     public int ArticleId { get; set; } 
     public virtual Article Article { get; set; } 

     [Required] 
     [MinLength(3)] 
     [MaxLength(64)] 
     public string Author { get; set; } 

     [MaxLength(64)] 
     public string Title { get; set; } 

     [Required] 
     [MinLength(4)] 
     [MaxLength(512)] 
     public string Content { get; set; } 
    } 

產生

我還在Global.asax Application_Start()方法中設置了初始值設定項:

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<BlogContext>()); 

問題是當我試圖打電話

var articles = db.Articles.Include(a => a.Category).Include(a => a.Author); 

我BlogController的Index()方法中與儲存物品的列表返回一個視圖。這發生的每調用數據庫相關的方法時,該錯誤信息是:

Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations. 

在教程,我發現任何關於這樣的問題,我看能不能解決問題的解決方案。

任何想法?

感謝

回答

5

DropCreateDatabaseIfModelChanges要求那裏是一個以前的模式已經到位前,將比較兩者。要啓動數據庫,您需要使用DropCreateDatabaseAlways初始值設定項。

+0

我也試過了,它會產生以下錯誤:無法刪除數據庫「aspnet-DbTestApp-20130205173443」,因爲它目前正在使用中。 –

+4

SQL Server Management Studio是否仍然打開?因爲這會保持連接對該數據庫開放。 – IronMan84

+0

是的,它是開放的,但它仍然會產生以前的錯誤。 –

相關問題