Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的数据库不是通过Entity Framework 6代码优先方法自动创建的?_C#_Sql Server_Asp.net Mvc_Entity Framework 6_Connection String - Fatal编程技术网

C# 我的数据库不是通过Entity Framework 6代码优先方法自动创建的?

C# 我的数据库不是通过Entity Framework 6代码优先方法自动创建的?,c#,sql-server,asp.net-mvc,entity-framework-6,connection-string,C#,Sql Server,Asp.net Mvc,Entity Framework 6,Connection String,我正在尝试使用代码优先的方法为在线考试系统创建一个数据库。我已经创建了我的数据模型,我的上下文类,在Global.asax文件中添加了我的setInitializer方法,添加了我的连接字符串 但数据库仍然没有被创建。我真的需要一些帮助 我的连接字符串: <connectionStrings> <add name="ExamDbContext" connectionString="server=LAPTOP-JJKI9JN7; Initial Cat

我正在尝试使用代码优先的方法为在线考试系统创建一个数据库。我已经创建了我的数据模型,我的上下文类,在
Global.asax
文件中添加了我的
setInitializer
方法,添加了我的连接字符串

但数据库仍然没有被创建。我真的需要一些帮助

我的连接字符串:

<connectionStrings>
    <add name="ExamDbContext" 
         connectionString="server=LAPTOP-JJKI9JN7; Initial Catalog=OnlineExamSystem; Integrated Security=true;" 
         providerName="System.Data.SqlClient">
    </add> 
</connectionStrings>
问题表格:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace Online_Exam_System.Models
{
    public class TBL_QUESTIONS
    {
        public int QUESTION_ID { get; set; }

        [Display(Name = "Question")]
        [Required(ErrorMessage = "The field is required")]
        public string QUESTION_TEXT { get; set; }


        public string OPTION { get; set; }

        [Display(Name = "OPTION A")]
        [Required(ErrorMessage = "The field is required")]
        public string OPTIONA { get; set; }

        [Display(Name = "OPTION B")]
        [Required(ErrorMessage = "The field is required")]
        public string OPTIONB { get; set; }

        [Display(Name = "OPTION C")]
        [Required(ErrorMessage = "The field is required")]
        public string OPTIONC { get; set; }

        [Display(Name = "OPTION D")]
        [Required(ErrorMessage = "The field is required")]
        public string OPTIOND { get; set; }

        public string CORRECT { get; set; }
    }
}
管理表格:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace Online_Exam_System.Models
{
    public class TBL_STUDENT
    {
        public int S_ID { get; set; }

        [Display(Name = "Student")]
        [Required(ErrorMessage = "The field is required")]
        public string S_NAME { get; set; }

        [Display(Name = "Password")]
        [Required(ErrorMessage = "The field is required")]
        public string S_PASSWORD { get; set; }

        [Display(Name = "Marks")]
        [Required(ErrorMessage = "The field is required")]
        public Nullable<int> S_MARKS { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace Online_Exam_System.Models
{
    public class TBL_ADMIN
    {
        public int AD_ID { get; set; }

        [Display(Name = "User Name")]
        [Required(ErrorMessage = "The field is required")]
        public string AD_NAME { get; set; }

        [Display(Name = "Password")]
        [Required(ErrorMessage = "The field is required")]
        [DataType(DataType.Password)]
        public string AD_PASSWORD { get; set; }
    }
}
我的上下文类

using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using Online_Exam_System.Models;
using System.Linq;
using System.Web;
using System.Data.Entity.ModelConfiguration.Conventions;

namespace Online_Exam_System.Data_Access_Layer
{
    public class ExamDbContext : DbContext
    {
        public ExamDbContext() : base("ExamDbContext")
        {
        }

        public DbSet<TBL_ADMIN> TBL_ADMIN { get; set; }
        public DbSet<TBL_QUESTIONS> TBL_QUESTIONS { get; set; }
        public DbSet<TBL_EXAM> TBL_SETEXAM { get; set; }
        public DbSet<TBL_STUDENT> TBL_STUDENT { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        }
    }
}
Global.asax
文件:

    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Optimization;
    using System.Web.Routing;

    namespace Online_Exam_System
    {
            public class MvcApplication : System.Web.HttpApplication
            {
                protected void Application_Start()
                {
                    Database.SetInitializer(new 
                    NullDatabaseInitializer<ExamDbContext>());
                    AreaRegistration.RegisterAllAreas();

                    FilterConfig.RegisterGlobalFilters
                    (GlobalFilters.Filters);
                    RouteConfig.RegisterRoutes(RouteTable.Routes);
                    BundleConfig.RegisterBundles(BundleTable.Bundles);
       }
}
使用系统;
使用System.Collections.Generic;
使用System.Data.Entity;
使用System.Linq;
使用System.Web;
使用System.Web.Mvc;
使用System.Web.Optimization;
使用System.Web.Routing;
名称空间在线考试系统
{
公共类MVC应用程序:System.Web.HttpApplication
{
受保护的无效应用程序\u Start()
{
Database.SetInitializer(新的
NullDatabaseInitializer());
RegisterAllAreas();
FilterConfig.RegisterGlobalFilters
(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}

设置初始值设定项后,通过访问某个位置的上下文或强制执行以下操作,强制其运行:

Database.SetInitializer(new NullDatabaseInitializer<ExamDbContext>());
// Forces initialization of database on model changes.
using (var context= new ExamDbContext ()) {
   context.Database.Initialize(false);
}    
Database.SetInitializer(新的NullDatabaseInitializer());
//在模型更改时强制初始化数据库。
使用(var context=newexamdbcontext()){
context.Database.Initialize(false);
}    

设置初始值设定项后,通过访问某个位置的上下文或强制执行以下操作,强制其运行:

Database.SetInitializer(new NullDatabaseInitializer<ExamDbContext>());
// Forces initialization of database on model changes.
using (var context= new ExamDbContext ()) {
   context.Database.Initialize(false);
}    
Database.SetInitializer(新的NullDatabaseInitializer());
//在模型更改时强制初始化数据库。
使用(var context=newexamdbcontext()){
context.Database.Initialize(false);
}    

错误是:非静态字段、方法或属性的数据库需要对象引用。初始化(bool)'是的,您可能需要在您的上下文中运行它。请参阅编辑。确定错误已得到解决,但它仍然没有创建数据库。您是否可以检查我的connectionString并确保它没有问题。如果是,您是否可以告诉我解决此问题的其他方法。确定,我看到了一个问题。您正在将初始值设定项设置为null,而不是使用您创建了一个。请尝试:
Database.SetInitializer(新的检查初始化器());
非常感谢Steve。这实际上解决了我的问题。我需要使用CreateDatabaseIfNoteExists()而不是NullDatabaseInitializer()。这创建了数据库。这确实是一个很大的帮助。已在数据库上停留了几天。感谢。错误是:非静态字段、方法或属性的数据库需要对象引用。初始化(bool)'是的,您可能需要在您的上下文中运行它。请参阅编辑。确定错误已得到解决,但它仍然没有创建数据库。您是否可以检查我的connectionString并确保它没有问题。如果是,您是否可以告诉我解决此问题的其他方法。确定,我看到了一个问题。您正在将初始值设定项设置为null,而不是使用您创建了一个。请尝试:
Database.SetInitializer(new-TestInitializer());
非常感谢Steve。这实际上解决了我的问题。我需要使用CreateDatabaseIfNoteExists()而不是NullDatabaseInitializer()。这创建了数据库。真的是一个很大的帮助。我已经坚持了好几天了。谢谢。