博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF架构学习第一章
阅读量:5133 次
发布时间:2019-06-13

本文共 3703 字,大约阅读时间需要 12 分钟。

EF是ORM(实体映射)

1、实体对象

2、实体之间的关系
3、如何映射(映射规则)

EF三中模式

Database First //数据库优先
Model First  //模型优先
Code First //代码优先

一、EF来创建数据库

1、实体

在MVC解决方案中,Model文件夹内新建实体(类)

1 ///  2     /// 学生表 3     ///  4     public class Student 5     { 6         ///  7         /// 学生编号(属性名为ID或者类名+ID 会自动生成为数据库的主键) 8         ///  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 + "." + FirstName;17             }18         }19         public DateTime EnrollDate { get; set; }//登记时间20         /*********************导航属性(引用属性  集合属性)*************************/21         public ICollection
Enrollments { get; set; }22 }
1 ///  2     /// 课程表 3     ///  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
Enrollments { get; set; }11 }
1 ///  2     /// 成绩表 3     ///  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
Students { get; set; } public DbSet
Courses { get; set; } public DbSet
Enrollments { get; set; } ///
/// 在模型创建的时候调用 /// ///
protected override void OnModelCreating(DbModelBuilder modelBuilder) { //移除在生产数据库表时 以复数形式的约定 modelBuilder.Conventions.Remove
(); } }

 

3、配置连接

打开Web.config配置连接 在这里name属性会自动查找类型名相同的上下文,如上面的SchoolDataContext

1 
2
3
4
5
6
7

 

4、初始化数据库

打开Global.asax首先引用命名空间

1 using System.Data.Entity;//引用EF2 using EFexample.DAL;//引用上下文

在Application_Start方法下追加以下代码

1  //初始化数据库应用程序启动的时候创建数据库2             Database.SetInitializer
(new SchoolInitializers());3 //这里的SchoolInitializers是建在DAL文件下的初始化器

5、初始化数据

在DAL文件下新建新建SchoolInitializer初始化器,可用于上面的初始化数据库参数

1 using System.Data.Entity;//引用EF2 using EFexample.Models;//引用Model

 

1 public class SchoolInitializers:   DropCreateDatabaseIfModelChanges
2 { 3 protected override void Seed(SchoolDataContext context) 4 { 5 List
student = new List
() 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 }

 

转载于:https://www.cnblogs.com/edwin-hu/p/4132188.html

你可能感兴趣的文章
表单重复提交
查看>>
HDU2767 Proving Equivalences(scc)
查看>>
shell脚本函数与数组
查看>>
HDU - 2825(AC自动机+状态压缩DP(需要优化))
查看>>
论Nim中的 proc 和 method
查看>>
Arch linux配置指南
查看>>
external panel
查看>>
【luogu2667】 超级质数 - DFS
查看>>
Bash快捷键
查看>>
spring相关文档地址
查看>>
happy in java之io流简介
查看>>
第六课 用通配符进行过滤
查看>>
自动代理生成器
查看>>
使用monkey技术修改python requests模块
查看>>
Binary Search Tree analog
查看>>
win7虚拟机MAC系统
查看>>
【优化】前端优化的几种常用方法(持续更新)
查看>>
测试用例-手势密码
查看>>
POJ 3013 Big Christmas Tree(单源最短路径)
查看>>
ZOJ3195 Design the city [2017年6月计划 树上问题04]
查看>>