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是基于这样的思想上的一种框架,它使得表和实体间具有映射关系。慢慢体会吧!
                    
                
                
            
        
浙公网安备 33010602011771号