[英]My database is not getting automatically created by Entity Framework 6 code-first approach?
I am trying to create a database using code first approach for an online exam system. 我正在尝试使用代码优先方法为在线考试系统创建数据库。 I have already created my data models, my context class, added my
setInitializer
method in the Global.asax
file, added my connection string. 我已经创建了数据模型,上下文类,在
Global.asax
文件中添加了setInitializer
方法,添加了连接字符串。
But still the database isn't getting created. 但是仍然没有创建数据库。 Would really use some help.
真的会使用一些帮助。
My connection string : 我的连接字符串:
<connectionStrings>
<add name="ExamDbContext"
connectionString="server=LAPTOP-JJKI9JN7; Initial Catalog=OnlineExamSystem; Integrated Security=true;"
providerName="System.Data.SqlClient">
</add>
</connectionStrings>
LAPTOP-JJKI9JN7
is my SSMS server name LAPTOP-JJKI9JN7
是我的SSMS服务器名称
Student table: 学生桌:
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; }
}
}
Question table : 问题表:
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; }
}
}
Admin table: 管理员表:
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; }
}
}
My context class 我的上下文课
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>();
}
}
}
My Initializer method (it's inside the Model
folder) 我的Initializer方法(位于
Model
文件夹中)
using Online_Exam_System.Data_Access_Layer;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace Online_Exam_System.Models
{
public class ExamInitializer : CreateDatabaseIfNotExists<ExamDbContext>
{
protected override void Seed(ExamDbContext context)
{
base.Seed(context);
}
}
}
Global.asax
file: 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);
}
}
After you set your initializer, force it to run by either accessing the context somewhere or forcing it: 设置初始化程序后,通过访问某个地方的上下文或强制它来强制其运行:
Database.SetInitializer(new NullDatabaseInitializer<ExamDbContext>());
// Forces initialization of database on model changes.
using (var context= new ExamDbContext ()) {
context.Database.Initialize(false);
}
Forcing code-first to always initialize a non-existent database? 强制代码优先始终初始化不存在的数据库?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.