zoukankan      html  css  js  c++  java
  • ASP.NET vNext总结:EntityFramework7

    ASP.NET vNext总结:EntityFramework7

    源码:http://www.jinhusns.com/Products/Download/?type=xcj

    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:

         

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

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

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

          

          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程序包管理器-》程序包管理器控制台:

          第一步:当前项目路径

          

          第二步:启用ef commands

          

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

         第三步:添加迁移

         

         这一步ok,会出现:

         

         第四步:同意迁移

         

         第五步:检查数据库

         

         也可以看一下关系图:

         

    6.小结

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

  • 相关阅读:
    go反射实现实体映射
    golang的time包:秒、毫秒、纳秒时间戳输出
    在 Gin 框架中使用 JWT 认证
    docker安装redis
    docker安装mysql5.7
    Python Web实战:Python+Django+MySQL实现基于Web版的增删改查
    apache2.4配置weblogic12c集群(linux环境)
    小BUG大原理:重写WebMvcConfigurationSupport后SpringBoot自动配置失效
    Spring源码解析02:Spring IOC容器之XmlBeanFactory启动流程分析和源码解析
    Git进阶:常用命令和问题案例整理
  • 原文地址:https://www.cnblogs.com/xiaoxiaojia/p/5394128.html
Copyright © 2011-2022 走看看