[英]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.