标签:style blog io ar color sp for strong 文件
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 get 15 { 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;//引用EF 2 using EFexample.DAL;//引用上下文
在Application_Start方法下追加以下代码
1 //初始化数据库应用程序启动的时候创建数据库 2 Database.SetInitializer<SchoolDataContext>(new SchoolInitializers()); 3 //这里的SchoolInitializers是建在DAL文件下的初始化器
5、初始化数据
在DAL文件下新建新建SchoolInitializer初始化器,可用于上面的初始化数据库参数
1 using System.Data.Entity;//引用EF 2 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 }
标签:style blog io ar color sp for strong 文件
原文地址:http://www.cnblogs.com/edwin-hu/p/4132188.html