Entity Framework之Code First

       EF(Entity Framework )是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping (对象关系映射(Object RelationalMapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。)) 解决方案。

         Entity Framework利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性(association),让数据库的 E/R 模型完全的转成对象模型。它有三种生成模式,分别为Database First、Model First、CodeFirst,那么今天我们就来实现Code First。所谓Code First就是说用代码来直接去创建数据库并进行EF映射。

首先我们先来添加两个实体类,代码如下:

订单类

public  class OrderInfo
    {
       [Key]
       public int Id { get; set; }
 
       public string Content { get; set; }
 
       /// <summary>
       /// 外键
       /// </summary>
       public int CustomerId { get; set; }
 
       public Customer Customer { get; set; }
    }


客户类

 

public class Customer
    {
       [Key]
       public int Id {get;set;}
 
       public string CusName { get; set; }
 
       public virtualICollection<OrderInfo> Order { get; set; }
    }

这里的[Key]是标识符的意思,也就是设定主键,这里要添加引用System.ComponentModel.DataAnnotations

接下来我们就自定义一个数据库上下文

public classHotelDbContext:DbContext
    {
       public HotelDbContext()
           :base("name=ConnCodeFirst")
        { }
        public DbSet<Customer> Customer {get; set; }
 
        public DbSet<OrderInfo> OrderInfo{ get; set; }
    }


要能继承DbContext类,就要添加System.Data.Entity,即引用在我们程序目录下的packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll

下面来写下配置文件

<?xmlversion="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="ConnCodeFirst"connectionString="server=.;uid=sa;pwd=1;database=CodeFirstDemoDb"providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>


要注意的是我们命名的字符串变量一定要和数据库上下文类中的变量名一致。

客户端程序

class Program
    {
        static void Main(string[] args)
        {
            HotelDbContext dbcontext = newHotelDbContext();
           dbcontext.Database.CreateIfNotExists();//如果数据库不存在,创建数据库
        }
    }


执行,看看你的数据库中有没有添加成功吧!

后记

学习EF从代码构建来实践会有更加不一样的体会,逻辑也更清晰了一些,三种构建方法我们都应该去实践一下,这样才能学好EF

 

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值