EF学习总结——CodeFirst
EF面向数据的一软件应用程序的技术,从名称来看,Entity Framework。实体框架,为什么说是面向数据呢?这里涉及到了EF的操作原理。它能够直接通过建立的实体来映射到数据库中的每张表,同一时候通过数据库中的表来映射实体中的各个属性。那么这里就涉及到三个对象,数据库,实体和code,所以。EF在构建映射关系时,也包括三种不同的构建方式。DataBaseFirst,ModelFirst和CodeFirst。
关于前两种的构建方式,均属于图形化界面方式,依据提示一步一步往下走。非常easy完毕,第三种codeFirst要求编写代码,通过代码来生成数据库,然后再通过数据库来生成Model。在完毕这些工作之前,我们须要把各个实体之间的关系理清楚,同一时候涉及到主外键关联和导航属性的编写等。
这里以视频中的样例来理一下思路。顾客与订单之间的关系为一对多。
先来编写实体类:
在编写前,首先要加入EntityFramework组件,并引入命名空间using System.ComponentModel.DataAnnotations ;支持主外键的声明。
public class Customer//顾客类 { [Key] public int Id { get; set; } public string CusName { get; set; } public ICollection<OrderInfo> order { set; get; }//这里反应出顾客与订单之间的一对多关系 }
public class OrderInfo //订单类 { [Key]//指定主键 public int Id { set; get; } public string Content { set; get; } public int customerId { set; get; }//外键 public Customer customer { set; get; }//导航属性,多对一关系 }编写数据库上下文类:
using System.Data.Entity;
public class HotelDbContext:DbContext { public HotelDbContext () :base("name=ConnCodeFirst") //这里要和配置文件里的名字一致 { } //数据库中包括下面两张表的集合 public DbSet<Customer> Customer { set; get; } public DbSet<OrderInfo> OrderInfo { set; get; } }运行client代码:
static void Main(string[] args) { HotelDbContext dbcontext = new HotelDbContext(); dbcontext.Database.CreateIfNotExists(); //创建一个数据库,假设不存在的话 }配置文件:
<configuration> <connectionStrings> <add name="ConnCodeFirst" connectionString ="server=.;uid=sa;pwd=123456;database=CodeFirstDb" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration>
通过以上步骤。就能够顺利创建一个数据库了,总的看来,EF中涉及到的就是这三种不同的构建方式,而在操作EF时,终于也离不开增删改查。而在EF中在对数据库进行操作时,说先要通过DbContext数据库上下文来对它进行操作,这里能够把它看成一个可供操作数据库的容器,在这个容器中对数据进行操作后,再将数据保存进数据库。
EF是在ADO.net基础上发展来的解决对象关系相应(ORM)的解决方式,ORM是一种思想,而EF是基于这样的思想上的一种框架,它使得表和实体间具有映射关系。慢慢体会吧!