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(增删改查)。下一章介绍项目发布和部署!

ASP.NET vNext总结:EntityFramework7的更多相关文章

  1. POCO Controller 你这么厉害,ASP.NET vNext 知道吗?

    写在前面 阅读目录: POCO 是什么? 为什么会有 POJO? POJO 的意义 POJO 与 PO.VO 的区别 POJO 的扩展 POCO VS DTO Controller 是什么? 关于 P ...

  2. 兼容Mono的下一代云环境Web开发框架ASP.NET vNext

    微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览.此次发布的ASP.NET框架与以前相比发生了根本性的变化,凸显了微软“云优先”(cl ...

  3. 在Linux上运行ASP.NET vNext

    最新的ASP.NET vNext完全开源且可以跨多个平台运行,在Windows环境下我尝试了下,几乎没花什么工夫就跑起了Sample,而在Linux环境下则要多花了不少时间,所以特别记录下整个过程,希 ...

  4. 让 ASP.NET vNext 在 Mac OS 中飞呀飞。。。

    写在前面 阅读目录: 娓娓道来 Install ASP.NET vNext Command Line Tools 安装 Homebrew 使用 Homebrew,安装 KVM Install Subl ...

  5. Mac OS X上编写 ASP.NET vNext(一)KRE环境搭建

    最新的asp.net vnext已经可以支持在mac上运行了,当然用的是mono.相比linux来说,mac的安装略显繁琐.对于大部分用Windows开发asp.net的程序员来说,初次配置还是很费时 ...

  6. 分享我对 ASP.NET vNext 的一些感受,也许多年回过头看 So Easy!

    写在前面 阅读目录: Visual Studio "14" CTP 关于 ASP.NET vNext ASP.NET vNext 实践 后记 ASP.NET vNext 发布已经过 ...

  7. 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试

    继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-ho ...

  8. 开发 ASP.NET vNext 初步总结(使用Visual Studio 14 CTP1)

    新特性: vNext又称MVC 6.0,不再需要依赖System.Web,占用的内存大大减少(从前无论是多么简单的一个请求,System.Web本身就要占用31KB内存). 可以self-host模式 ...

  9. ASP.NET vNext 概述

    兼容Mono的下一代云环境Web开发框架ASP.NET vNext 我们知道了ASP.NET vNext是一个全新的框架,是一个与时俱进的框架.这篇文章将深入讨论在整体架构更多的细节,文档参照 ASP ...

随机推荐

  1. 剑指Offer面试题:18.二叉树的镜像

    一.题目:二叉树的镜像 题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像.例如下图所示,左图是原二叉树,而右图则是该二叉树的镜像. 该二叉树节点的定义如下,采用C#语言描述: public c ...

  2. Sharing A Powerful Tool For Application Auto Monitor

    本文分享的这个应用监控小工具,本来是我在五年多以前开发实现的windows服务监控的一个windows服务.听上去比较拗口吧,是的,这个应用一开始就是个监控windows服务的windows服务. 记 ...

  3. [ASP.NET MVC 小牛之路]08 - Area 使用

    ASP.NET MVC允许使用 Area(区域)来组织Web应用程序,每个Area代表应用程序的不同功能模块.这对于大的工程非常有用,Area 使每个功能模块都有各自的文件夹,文件夹中有自己的Cont ...

  4. [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)

    继上一篇文章之后,本文将介绍 Controller 和 Action 的一些较高级特性,包括 Controller Factory.Action Invoker 和异步 Controller 等内容. ...

  5. 当MyEclipse突然异常关闭

    今天的博文主要记录一个问题,就是当MyEclipse异常关闭后,再次开启环境,导致Tomcat无法启动的问题解决方案 问题描述:在MyEclipse启动或者是tomcat启动的时候出现:Address ...

  6. Html5 设置菱形链接菜单

    本例是采用html5+css3.0设置的菜单链接.其中主要用到了以下几个方面: 1. CSS3.0中的2D变换,如:旋转transform:rotate(45deg);移动,放大transform:r ...

  7. 《Spark快速大数据分析》—— 第三章 RDD编程

  8. 移动开发--Hybrid和Native混合开发-->HybridApp 、NativeApp、WebApp

    1.1.     APP三种开发模式 智能手机之普及不用多说,手机APP渗投到各个行业:电商(淘宝.京东等).金融(各手机行业.P2P借贷等).医疗(智慧医疗).交通(滴滴.Uber等).教育(慕课网 ...

  9. mock.js

    mock.js http://mockjs.com/ https://github.com/nuysoft/Mock/wiki 为了完成angularjs的karma测试,看到这个好东东,这货能拦截a ...

  10. 【WP开发】JSON数据的读与写

    在不使用其他库的情况下,WP-RT应用中也可以处理JSON数据.主要的几个类都放到Windows.Data.Json命名空间中: IJsonValue接口作为用于封装JSON数据的规范,其中只读属性V ...