zoukankan      html  css  js  c++  java
  • 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是基于这样的思想上的一种框架,它使得表和实体间具有映射关系。慢慢体会吧!


  • 相关阅读:
    BZOJ 1008 [HNOI2008]越狱
    BZOJ 1588 [HNOI2002]营业额统计
    20170520 DP阶段总结
    HDU 3507 Print Article
    浅谈随机数生成器及其应用
    BZOJ 1010 [HNOI2008]toy 玩具装箱
    斯堪福三定律
    这是我在博客园上的第一篇博客
    微博粉丝服务---“公众号”开发
    XML解析---利用XStream解析xml数据及反构造Java对象
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7065985.html
Copyright © 2011-2022 走看看