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(增删改查)。下一章介绍项目发布和部署!
ASP.NET vNext总结:EntityFramework7的更多相关文章
- POCO Controller 你这么厉害,ASP.NET vNext 知道吗?
写在前面 阅读目录: POCO 是什么? 为什么会有 POJO? POJO 的意义 POJO 与 PO.VO 的区别 POJO 的扩展 POCO VS DTO Controller 是什么? 关于 P ...
- 兼容Mono的下一代云环境Web开发框架ASP.NET vNext
微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览.此次发布的ASP.NET框架与以前相比发生了根本性的变化,凸显了微软“云优先”(cl ...
- 在Linux上运行ASP.NET vNext
最新的ASP.NET vNext完全开源且可以跨多个平台运行,在Windows环境下我尝试了下,几乎没花什么工夫就跑起了Sample,而在Linux环境下则要多花了不少时间,所以特别记录下整个过程,希 ...
- 让 ASP.NET vNext 在 Mac OS 中飞呀飞。。。
写在前面 阅读目录: 娓娓道来 Install ASP.NET vNext Command Line Tools 安装 Homebrew 使用 Homebrew,安装 KVM Install Subl ...
- Mac OS X上编写 ASP.NET vNext(一)KRE环境搭建
最新的asp.net vnext已经可以支持在mac上运行了,当然用的是mono.相比linux来说,mac的安装略显繁琐.对于大部分用Windows开发asp.net的程序员来说,初次配置还是很费时 ...
- 分享我对 ASP.NET vNext 的一些感受,也许多年回过头看 So Easy!
写在前面 阅读目录: Visual Studio "14" CTP 关于 ASP.NET vNext ASP.NET vNext 实践 后记 ASP.NET vNext 发布已经过 ...
- 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试
继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-ho ...
- 开发 ASP.NET vNext 初步总结(使用Visual Studio 14 CTP1)
新特性: vNext又称MVC 6.0,不再需要依赖System.Web,占用的内存大大减少(从前无论是多么简单的一个请求,System.Web本身就要占用31KB内存). 可以self-host模式 ...
- ASP.NET vNext 概述
兼容Mono的下一代云环境Web开发框架ASP.NET vNext 我们知道了ASP.NET vNext是一个全新的框架,是一个与时俱进的框架.这篇文章将深入讨论在整体架构更多的细节,文档参照 ASP ...
随机推荐
- UI控件(UISlider)
@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UISlider* slider = [[UISli ...
- 架构之路(七)MVC点滴
我们目前正在开发中的是任务管理系统,一个前端复杂的项目,所以我们先从MVC讲起吧. WebForm 随着ASP.NET MVC的兴起,WebForm已成昨日黄花,但我其实还很想为WebForm说几句. ...
- JavaScript 事件管理
在设计JavaScript xxsdk的时候考虑到能让调用者参与到工作流程中来,开始用了回调函数.如下: this.foo = function(args,callbackFn) { //do som ...
- Javascript分号,加还是不加?
关于这个问题,网上已经有很多人讨论过了,我先说说自己对这个问题的回答:加!(但非必须) 有些人写代码,懒得加分号,除非是迫不得已才勉强放一个分号上去.如果你可以保证你写的代码不出现任何 bug,那当然 ...
- [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图
[.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图 1.用例图简介 定义:用例图主要用来描述“用户.需求.系统功能单元”之间的关系. ...
- Tomcat搭建
标签:Tomcat 概述 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选. ...
- ASP.NET Web API标准的“管道式”设计
ASP.NET Web API的核心框架是一个消息处理管道,这个管道是一组HttpMessageHandler的有序组合.这是一个双工管道,请求消息从一端流入并依次经过所有HttpMessageHan ...
- 固定Table的头部和左边的列-在Knockout Js使用场景下
要求:固定Table的头部和左边的列 场景:Knockout Js被用于绑定Table的数据源. 固定HTML表格的头部和列是一个很常见的需求.此文:http://www.cnblogs.com/so ...
- iOS-SDWebimage底层实现原理
其实有些框架的实现原理,并没有想象中那么难,思想也很简单,主要是更新第三方框架的作者对自己写的代码,进行了多层封装,使代码的可读性降低,也就使得框架看起来比较难.我来实现以下SDWebimage的的曾 ...
- ExtJs布局详解
序言 1.百度百科上说:ExtJs功能丰富,无人能出其右.无论是界面之美,还是功能之强,extjs都高居榜首. 2.呵呵,界面之美当是少不了布局的,这篇文章我写layout的七种布局.(extjs是4 ...