[英]Is it possible to add two table's data in Seed method in Entity Framework(Code-first)?
在我的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
}
}
};
我需要这种方法起作用的目的是因为我使用的是代码优先实体框架,因此我需要确保在删除数据库并再次创建数据库时,这些行应写入这些表中。
你能给我一个解决这个问题的想法吗?谢谢!
这就是我解决的方法。
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,因此我在MVC文件夹中找到了名为“ Global.asax”的文件,并向其中添加了“ SetInitializer”。 这就是它的样子...
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());**
}
}
然后我运行了我的主页。 的。 它会自动将我的数据对象插入数据库...这就是我的主页。
@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);
}
谢谢!!!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.