对电子商务网站建设的理解,郑州三附院不孕不育科专家,城乡建设查询网站,iis网站目录在哪最近悟出来一个道理#xff0c;在这儿分享给大家#xff1a;学历代表你的过去#xff0c;能力代表你的现在#xff0c;学习代表你的将来。 十年河东十年河西#xff0c;莫欺少年穷 学无止境#xff0c;精益求精 本篇为进阶篇#xff0c;也是弥补自己之前没搞明白的地方,… 最近悟出来一个道理在这儿分享给大家学历代表你的过去能力代表你的现在学习代表你的将来。 十年河东十年河西莫欺少年穷 学无止境精益求精 本篇为进阶篇也是弥补自己之前没搞明白的地方,惭愧惭愧。 如有不明白请参考EF CodeFirst 创建数据库 及 EF CodeFirst增删改查之‘CRUD’ 话不多说直接上代码 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;namespace EF_Test.DAL
{public class StudentInitializer : System.Data.Entity.DropCreateDatabaseIfModelChangesStudentContext{protected override void Seed(StudentContext context){//添加学生var studentList new ListStudent{new Student{Name 陈依依, Sex 女, StudentNum 081309201},new Student{Name 戚永景, Sex 女, StudentNum 081309202},new Student{Name 刘华丽, Sex 女, StudentNum 081309203},new Student{Name 薛正钦, Sex 男, StudentNum 081309204},new Student{Name 王松涛, Sex 男, StudentNum 081309205},new Student{Name 王自龙, Sex 男, StudentNum 081309206},new Student{Name 高其峰, Sex 男, StudentNum 081309207},new Student{Name 陈欣欣, Sex 女, StudentNum 081309208},new Student{Name 陈丽阳, Sex 女, StudentNum 081309209}};studentList.ForEach(s context.Students.Add(s));context.SaveChanges();//添加课程var courseList new ListCourse{new Course{ Name数据结构},new Course{ Name计算机原理},new Course{ Name网络技术}};courseList.ForEach(s context.Courses.Add(s));context.SaveChanges();//添加分数var scoreList new ListScore(){new Score{ StudentID1,CourseID1,StudentScore90},new Score{ StudentID2,CourseID1,StudentScore91},new Score{ StudentID3,CourseID1,StudentScore92},new Score{ StudentID4,CourseID1,StudentScore93},new Score{ StudentID5,CourseID1,StudentScore94},new Score{ StudentID6,CourseID1,StudentScore95},new Score{ StudentID7,CourseID1,StudentScore96},new Score{ StudentID8,CourseID1,StudentScore97},new Score{ StudentID9,CourseID1,StudentScore98}};scoreList.ForEach(s context.Scores.Add(s));context.SaveChanges();}}
} 模型类如下 using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Web;namespace EF_Test.DAL
{public class Student{[Key]public int Id { get; set; }[Required][StringLength(10)]public string Name { get; set; }//姓名[StringLength(2)]public string Sex { get; set; }//性别[StringLength(20)]public string StudentNum { get; set; }//学号}public class Course{[Key]public int Id { get; set; }[Required][StringLength(20)]public string Name { get; set; }//课程名称}public class Score{[Key]public int Id { get; set; }public int StudentScore { get; set; }//学生分数public int StudentID { get; set; }//学生IDpublic int CourseID { get; set; }//课程IDpublic virtual Student Student { get; set; }//virtual关键字修饰用于延迟加载 提高性能 只有显式调用时 属性对象public virtual Course Course { get; set; }//virtual关键字修饰用于延迟加载 提高性能 只有显式调用时 属性对象}public class StudentContext : DbContext{public StudentContext(): base(StudentContext)//指定连接字符串{}public DbSetStudent Students { get; set; }public DbSetCourse Courses { get; set; }public DbSetScore Scores { get; set; }/// summary/// OnModelCreating方法中的modelBuilder.Conventions.Remove语句禁止表名称正在多元化。如果你不这样做所生成的表将命名为Students、Courses和Enrollments。相反表名称将是Student、Course和Enrollment。开发商不同意关于表名称应该多数。本教程使用的是单数形式但重要的一点是您可以选择哪个你更喜欢通过包括或省略这行代码的形式。/// /summary/// param namemodelBuilder/paramprotected override void OnModelCreating(DbModelBuilder modelBuilder){modelBuilder.Conventions.RemovePluralizingTableNameConvention();}}
} OK截止到这儿您可能会问我protected override void Seed这个重写的方法什么时间执行呢 在此需要两点要求 1、在web.config中entityFramework接点下加入如下配置 contextscontext typeEF_Test.DAL.StudentContext, EF_TestdatabaseInitializer typeEF_Test.DAL.StudentInitializer, EF_Test //context/contexts 根据上述类文件我们应该明白EF_Test是个命名空间EF_Test.DAL.StudentContext是数据库上下文EF_Test.DAL.StudentInitializer是初始化类 2、加上了上述配置还需模型结构发生改变时程序才会自动执行Seed()方法例如将字段长度由50改为20 综上所述条件满足后程序就会自动重新删除数据库并建立 陈卧龙的博客