ASP.NET vNext总结:EntityFramework7

版权所有,禁止匿名转载;禁止商业使用。

1.概述


关于EF7之前的版本如何?这里就不再扯了。更不会和别人争论EF的性能如何?好比一把宝刀,在善于用它的高手和不善于用它的低手使用威力不同的。


如题,这里简单说一下EF7,同样它还处于beta版本阶段,如果你遇到bug或功能变化等疑问,不要见怪了。


EF7只支持 CodeFrist 代码优先的映射方式,将来它可以支持更多种数据库,如已经对SQLLite嵌入式数据库支持很好,甚至牛逼得还要支持NoSQL(非关系型数据库)。当然,我也不会说别的ORM就Out,Old了。一样东西之所以存在并有部分人使用,必然有它的价值,从哲学上来说,存在即合理!


EF只是封装.Net操作和访问数据库(也就是在ADO.NET基础上),但你首先把它当成映射工具,这也是它的出现第一初衷解决 面对对象 模型和 关系型数据 模型映射,至于你非要在意性能,你可以EF中使用原始的SQL语句及存储过程和ADO.NET底层技术。


显然EF7不是专属于ASP.NET vNext中使用,但本介绍是专题系列,体验在vNext项目模板中使用。


2.创建项目


在前面文章介绍过的” vNext “解决方案上,右键:添加-》新建项目-》Visual C#-》ASP.NET 5 Console Application,其项目“名称”:vNext.ConsoleAppTemplate,并把它”设为项目启动项“。


这里先以vNext模板的 控制台项目 介绍,在后面完整的项目实战中,再在Web项目中“研究”!


3.安装EF及设置commands


打开project.json:

bmAJby.jpg


注:commands的ef配置是启动ef迁移用的,后面也会说明的。


4.添加模型类及上下文类


先项目根目录下,创建Models文件夹,在其里面添加三个类文件:

eyAR3u.jpg


Role.cs代码:


using System.Collections.Generic;
namespace vNext.ConsoleAppTemplate.Models
{
  /// <summary>
  /// 角色实体类
  /// </summary>
  public class Role
  {
    public int ID { get; set; }
    public string Name { get; set; }
    //导航属性
    public ICollection<User> Users { get; set; }
  }
}

User.cs代码:


namespace vNext.ConsoleAppTemplate.Models
{
  /// <summary>
  /// 用户实体类
  /// </summary>
  public class User
  {
    public int ID { get; set; }
    public string Name { get; set; }
    public Gender Gender { get; set; }
    //外键属性
    public int RoleID { get; set; }
    //导航属性
    public Role Role { get; set; }
  }
  /// <summary>
  /// 性别 枚举类型
  /// </summary>
  public enum Gender { man, woman, secrecy }
}

EFContext.cs代码:


using Microsoft.Data.Entity;
using Microsoft.Data.Entity.Metadata;
namespace vNext.ConsoleAppTemplate.Models
{
  /// <summary>
  /// 数据库上文类
  /// </summary>
  public class EFDbContext : DbContext
  {
    public DbSet<Role> Roles { get; set; }
    public DbSet<User> Users { get; set; }
    protected override void OnConfiguring(DbContextOptions options)
    {
      //数据库连接字符串
      options.UseSqlServer("Server=.;Database=TestDB;UID=sa;PWD=123456");
    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
      //多对一关系及指定外键
      //EF7好像没法自动关系定义,所以这里定义一下
      modelBuilder.Entity<User>().ManyToOne(r => r.Role, u => u.Users).ForeignKey(f => f.RoleID);
    }
  }
}

5.迁移


打开vs,工具-》Nuget程序包管理器-》程序包管理器控制台:


第一步 :当前项目路径


 2UzMfm.jpg


第二步 :启用ef commands


BbUree.jpg

注:这一步必须在project.json中commands配置ef。


第三步 :添加迁移


m6NVVv.jpg

这一步ok,会出现:


yyEjym.jpg

第四步 :同意迁移

Q7JjQf.jpg


第五步 :检查数据库


nMviIz.jpg

也可以看一下关系图:



6.小结


本章算是小试牛刀开个头了,后面在Web项目中再继续EF的GRUD(增删改查)。下一章介绍项目发布和部署!


0 0