实体框架数据库初始化程序失败

时间:2014-10-16 14:16:10

标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-4

我一直在关注本教程http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application,但为我正在进行的项目定制它。

我运行时遇到问题 - 当我访问需要使用数据库的控制器时,它无法初始化数据库并给我这个错误:

Failed to set database initializer of type 'JustSpecIt.DAL.JustSpecItInitializer, JustSpecIt' for DbContext type 'JustSpecIt.DAL.JustSpecItAppContext, JustSpecIt' specified in the application

我的初始化程序和上下文文件位于DAL文件夹中。在我的webconfig文件中,我有:

<entityFramework>
 <contexts>
<context type="JustSpecIt.DAL.JustSpecItAppContext, JustSpecIt">
  <databaseInitializer type="JustSpecIt.DAL.JustSpecItInitializer, JustSpecIt" />
</context>

                        

对于我的连接字符串,我有:

<connectionStrings>
<add name="JustSpecItAppContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=JustSpecIt;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>  
</connectionStrings>

我是新手,请告诉我是否需要更多信息。

根据要求,这是我的初始化类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using JustSpecIt.Models;


namespace JustSpecIt.DAL

{

    public class JustSpecItInitialiser : System.Data.Entity.DropCreateDatabaseIfModelChanges<JustSpecItAppContext>
    {
        protected override void Seed(JustSpecItAppContext context)
        {
            var Projects = new List<Project>
            {
            new Project {ProjectName="Just Spec It", ClientID = "GR Corp", Description="Build Just Spec It Application"}
            };

            Projects.ForEach(s => context.Projects.Add(s));
            context.SaveChanges();

            var UseCases = new List<UseCase>
            {
                new UseCase {ProjectID = 1, ActorID = 1, Title = "Print Specification"}
            };

            UseCases.ForEach(s => context.UseCases.Add(s));
            context.SaveChanges();

            var Steps = new List<Step>
            {
                new Step {UseCaseID = 1, Content = "This is step 1"},
                new Step {UseCaseID = 1, Content = "This is step 2"},
                new Step {UseCaseID = 1, Content = "This is step 3"},
            };

            Steps.ForEach(s => context.Steps.Add(s));
            context.SaveChanges();

            var Queries = new List<Query>
            {
                new Query {UseCaseID = 1, QueryDescription = "We need to add more details to this Use Case!"}
            };

            Queries.ForEach(s=> context.Queries.Add(s));
            context.SaveChanges();

            var Actors = new List<Actor>
            {
                new Actor {Title = "Business Analyst", Description = "This group will interact with the application to generate the use cases. They will follow Cockburn's writing process to produce the use cases in an effective way!"},
                new Actor {Title = "End System User", Description = "These users will use the application for two primary purposes. The first is to submit uses case titles (which in fact will be their goals). After the Business Analyst has entered full details into the application about how these goals will be carried out, the End System Users will use the application again to review and comment on them."}
            };

            Actors.ForEach(s => context.Actors.Add(s));
            context.SaveChanges();
        }
    }
}

1 个答案:

答案 0 :(得分:3)

JustSpecItInitiali s er或JustSpecItInitiali z 呃? 检查语法。