在我的DataLayer中,我有这个'种子'方法:
protected override void Seed(Context context)
{
User u1 = new User()
{
UserName = "dayan",
Password = "dayan",
Role = "Admin"
};
User u2 = new User()
{
UserName = "neranjan",
Password = "neranjan",
Role = "employee"
};
context.Users.Add(u1);
context.Users.Add(u2);
base.Seed(context);
}
这是我的用户表的样子:
所以现在我需要在这个种子方法中添加更多表数据,如下所示:
Examination e = new Examination()
{
Description = "fromda console",
CutOffMark = 1000,
QuestionID = new List<Question>()
{
new Question()
{
QuestionDes = "Question",
Answer1 = "11",
Answer2 = "22",
Answer3 = "33",
Answer4 = "44",
Correct = 1
}
}
};
我需要这种方法工作的目的是因为我正在使用代码优先的实体框架 我需要确保当我删除数据库并再次创建数据库时,这些行应写在这些表中。
你能告诉我如何解决这个问题吗? 谢谢!!答案 0 :(得分:0)
这就是我解决它的方法....
public class ContextSeeder : DropCreateDatabaseIfModelChanges<Context>
{
protected override void Seed(Context context)
{
Examination e1 = new Examination()
{
Description = "Science",
CutOffMark = 10,
QuestionID = new List<Question>()
{
new Question()
{
QuestionDes = "What is a data bus?",
Answer1 = "It carries a word to or from memory",
Answer2 = "It is used to store intermediate data and instructions",
Answer3 = "It decodes the instructions",
Answer4 = "It contains the instruction that is being executed",
Correct = 1
//ExaminationID = 1
}
}
};
Examination e2 = new Examination()
{
Description = "Science",
CutOffMark = 10,
QuestionID = new List<Question>()
{
new Question()
{
QuestionDes = "What is program counter?",
Answer1 = "It keeps track of the memory address of the instruction that is to be executed next.",
Answer2 = "It is used to store intermediate data and instructions",
Answer3 = "It decodes the instructions",
Answer4 = "It contains the instruction that is being executed",
Correct = 1
//ExaminationID = 1
}
}
};
Examination e3 = new Examination()
{
Description = "Science",
CutOffMark = 10,
QuestionID = new List<Question>()
{
new Question()
{
QuestionDes = "Expand SD RAM.?",
Answer1 = "Synchronous Dynamic Random Access Memory.",
Answer2 = "It is used to store intermediate data and instructions",
Answer3 = "It decodes the instructions",
Answer4 = "It contains the instruction that is being executed",
Correct = 1
//ExaminationID = 1
}
}
};
Examination e4 = new Examination()
{
Description = "Computer Science",
CutOffMark = 40,
QuestionID = new List<Question>()
{
new Question()
{
QuestionDes = "What is Instruction register?",
Answer1 = "Stores a copy of current instruction.",
Answer2 = "It is used to store intermediate data and instructions",
Answer3 = "It decodes the instructions",
Answer4 = "It contains the instruction that is being executed",
Correct = 1
//ExaminationID = 1
}
}
};
User u1 = new User()
{
UserName = "dayan",
Password = "dayan",
Role = "Admin"
};
User u2 = new User()
{
UserName = "neranjan",
Password = "neranjan",
Role = "employee"
};
context.Examinations.Add(e1);
context.Examinations.Add(e2);
context.Examinations.Add(e3);
context.Examinations.Add(e4);
context.Users.Add(u1);
context.Users.Add(u2);
//context.SaveChanges();
base.Seed(context);
}
}
我正在使用MVC,所以我发现这个名为&#39; Global.asax&#39;在我的MVC文件夹中,我添加了这个&#39; SetInitializer&#39;它。这就是它的样子......
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
**Database.SetInitializer(new ContextSeeder());**
}
}
然后我跑了我的主页。的。它会自动将我的数据对象插入到DB中... 这就是我的主页看起来像......
@using (Html.BeginForm("Results", "Exam"))
{
<table>
<tr>
<td>
@grid.GetHtml(columns: new[]{
grid.Column("ID"),
grid.Column("QuestionDes"),
grid.Column("Answer1"),
grid.Column("Answer2"),
grid.Column("Answer3"),
grid.Column("Answer4")
})
</td>
<td>
@Html.DropDownList("Answer1", new SelectList(ViewBag.sel, "Value", "Text"), new { @id = "1" })
@Html.DropDownList("Answer2", new SelectList(ViewBag.sel, "Value", "Text"), new { @id = "2" })
@Html.DropDownList("Answer3", new SelectList(ViewBag.sel, "Value", "Text"), new { @id = "3" })
@Html.DropDownList("Answer4", new SelectList(ViewBag.sel, "Value", "Text"), new { @id = "4" })
</td>
</tr>
</table>
<input type="submit" value="Submit"/>
}
控制器:
public ActionResult Examination()
{
IService ser = new Service();
//taking all the list questions passed from the LoadQuestions_ToTheGridview() method
List<Entities.Question> list = ser.LoadQuestions_ToTheGridview();
ViewBag.qlist = list;
List<Models.SelectedListItems> selList = new List<Models.SelectedListItems>();
selList.Add(new Models.SelectedListItems { Text = "----Select----", Value = "0" });
selList.Add(new Models.SelectedListItems { Text = "Answer 1", Value = "1" });
selList.Add(new Models.SelectedListItems { Text = "Answer 2", Value = "2" });
selList.Add(new Models.SelectedListItems { Text = "Answer 3", Value = "3" });
selList.Add(new Models.SelectedListItems { Text = "Answer 4", Value = "4" });
ViewBag.sel = selList;
return View(list);
}
谢谢!!!!