首页 > 代码库 > EF架构学习第一章
EF架构学习第一章
EF是ORM(实体映射)
1、实体对象
2、实体之间的关系
3、如何映射(映射规则)
EF三中模式
Database First //数据库优先
Model First //模型优先
Code First //代码优先
一、EF来创建数据库
1、实体
在MVC解决方案中,Model文件夹内新建实体(类)
1 /// <summary> 2 /// 学生表 3 /// </summary> 4 public class Student 5 { 6 /// <summary> 7 /// 学生编号(属性名为ID或者类名+ID 会自动生成为数据库的主键) 8 /// </summary> 9 public int StudentID { get; set; }10 public string FirstName { get; set; } //姓11 public string LastName { get; set; } //名12 public string FullName //全名13 {14 get15 {16 return LastName + "." + FullName;17 }18 }19 public DateTime EnrollDate { get; set; }//登记时间20 /*********************导航属性(引用属性 集合属性)*************************/21 public ICollection<Enrollment> Enrollments { get; set; }22 }
1 /// <summary> 2 /// 课程表 3 /// </summary> 4 public class Course 5 { 6 public int CourseID { get; set; }//课程ID自动为主键 7 public string Title { get; set; }//课程名 8 public int Credit { get; set; }//学分 9 /*********************导航属性(引用属性 集合属性)*************************/10 public ICollection<Enrollment> Enrollments { get; set; }11 }
1 /// <summary> 2 /// 成绩表 3 /// </summary> 4 public class Enrollment 5 { 6 public int EnrollmentID { get; set; } 7 public int StudentID { get; set; } 8 public int CourseID { get; set; } 9 public decimal Score { get; set; }10 /*********************导航属性(引用属性 集合属性)*************************/11 public Student Student { get; set; }12 public Course Course { get; set; }13 }
2、配置上下文 DBContext
1.新建DAL文件夹,创建SchoolDataContext类
2.先引用命名空间
1 using System.Data.Entity;//引用此命名空间2 using EFexample.Models;//引用模板(EFexample是解决方案名)3 using System.Data.Entity.ModelConfiguration.Conventions;//用于映射
3.在SchoolDataContext类里面写入
public class SchoolDataContext:DbContext { //上下文会自动寻找与上下文同名的连接字符串 //定义实体集(数据库中表名以属性的复数形式命名) public DbSet<Student> Students { get; set; } public DbSet<Course> Courses { get; set; } public DbSet<Enrollment> Enrollments { get; set; } /// <summary> /// 在模型创建的时候调用 /// </summary> /// <param name="modelBuilder"></param> protected override void OnModelCreating(DbModelBuilder modelBuilder) { //移除在生产数据库表时 以复数形式的约定 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); } }
3、配置连接
打开Web.config配置连接 在这里name属性会自动查找类型名相同的上下文,如上面的SchoolDataContext
1 <!--配置连接-->2 <connectionStrings>3 <add name="SchoolDataContext" connectionString=" server=.; uid=sa; pwd=123456; Database=MyReleaseDB;" providerName="System.Data.SqlClient"/>4 <!--name引用于DAL上下文(自动查找同名的)-->5 <!--providerName引用的上下文-->6 <!--connectionString数据库的链接串-->7 </connectionStrings>
4、初始化数据库
打开Global.asax首先引用命名空间
1 using System.Data.Entity;//引用EF2 using EFexample.DAL;//引用上下文
在Application_Start方法下追加以下代码
1 //初始化数据库应用程序启动的时候创建数据库2 Database.SetInitializer<SchoolDataContext>(new SchoolInitializers());3 //这里的SchoolInitializers是建在DAL文件下的初始化器
5、初始化数据
在DAL文件下新建新建SchoolInitializer初始化器,可用于上面的初始化数据库参数
1 using System.Data.Entity;//引用EF2 using EFexample.Models;//引用Model
1 public class SchoolInitializers:
DropCreateDatabaseIfModelChanges<SchoolDataContext> 2 { 3 protected override void Seed(SchoolDataContext context) 4 { 5 List<Student> student = new List<Student>() 6 { 7 new Student{ 8 FirstName="Hu", 9 LastName="Langtao",10 EnrollDate=DateTime.Parse("2014-11-29 20:50:02")11 }12 };13 student.ForEach(item => context.Students.Add(item));14 context.SaveChanges();15 }16 }
EF架构学习第一章
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。