Code First 一
Code-First和我们的数据库优先方式是相反的,数据库优先是通过数据库映射出相应的类和上下文,Code-First测试通过创建的类和上下文得到相应的数据库。
Code-First主要用于领域驱动设计。使用Code-First方法,您可以专注于域设计,并根据您的域要求开始创建类,而不是先设计数据库,然后创建与您的数据库设计相匹配的类。Code-First API将根据您的实体类和配置实时创建数据库。对于程序员而言这样方便了很多,我们可以把注意力集中在代码上面而不用去管数据库。
基本的工作流程将是:
①编写应用程序域类和上下文类
②配置域类以获得额外的映射需求
③按F5运行应用程序
④Code First API创建新数据库或使用域类映射现有数据库
⑤将种子默认/测试数据插入数据库
⑥最后启动应用程序
例如:
新建一个控制台,安装EF框架,准备做测试。
①创建相关的类,一个类对应数据库的一张表


②创建上下文

③配置文件

④F5运行,运行成功会在数据库中自动创建数据库和表



默认规则集:
按照规则做了就会达到相应的目的。
例如:
① 类型约定: 上下文中使用DbSet<TEntity>类型属性,或者在DbSet类的里面存在引用类型,而没有出现在上下文中,会在数据库中创建表


② 主键约定:
属性名称是Id或<类名> Id(不区分大小写),则EF会为属性创建主键。主键属性的数据类型可以是任何内容,但是如果是数字或GUID,那么它将被配置为数据库中的标识列。
如果您已经定义了除Id或<ClassName> Id以外的关键属性,则将抛出ModelValidationException。

注意:每个实体类必须在实体框架中包含关键属性。
③关系约定
EF 6默认使用导航属性来推断一对多关系。
注意: EF 6不包括一对一和多对多关系的默认约定。您需要使用Fluent API或DataAnnotation进行配置。我们在后面会详细介绍。
④外键约定
我们已经在上面看到Code First在遇到导航属性时会自动插入一个外键。建议在关系的依赖端包含一个外键属性。



约定:


数据库初始化: 第一个例子就是利用链接字符串来初始化的
上下文类的基础构造函数可以具有以下参数。
- 没有参数
- 数据库名称
- 连接字符串名称
没有参数
如果您没有在上下文类的基础构造函数中指定参数,那么它将在本地SQLEXPRESS服务器中创建一个名称与您的{Namespace}。{Context class name}匹配的数据库。例如,Code First将为以下上下文类创建一个名为SchoolDataLayer.Context的数据库: (因为我这边没有安装SQL express所以演示不了)

数据库名称:

ConnectionString名称:



Code First 一的更多相关文章
- Visual Studio Code 代理设置
Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器,在十多年的编程经历中,我使用过非常多的的代码编辑器(包括 IDE),例如 Fron ...
- 我们是怎么做Code Review的
前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- 代码的坏味道(14)——重复代码(Duplicate Code)
坏味道--重复代码(Duplicate Code) 重复代码堪称为代码坏味道之首.消除重复代码总是有利无害的. 特征 两个代码片段看上去几乎一样. 问题原因 重复代码通常发生在多个程序员同时在同一程序 ...
- http status code
属于转载 http status code:200:成功,服务器已成功处理了请求,通常这表示服务器提供了请求的网页 404:未找到,服务器未找到 201-206都表示服务器成功处理了请求的状态代码,说 ...
- Visual Studio Code——Angular2 Hello World 之 2.0
最近看到一篇用Visual Studio Code开发Angular2的文章,也是一篇入门教程,地址为:使用Visual Studio Code開發Angular 2專案.这里按部就班的做了一遍,感觉 ...
- WebStorm 2016 最新版激活(activation code方式)
WebStorm 2016 最新版激活(activation code方式) WebStorm activation code WebStorm 最新版本激活方式: 今天下载最新版本的WebStorm ...
- docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
.net猿遇到了小鲸鱼,觉得越来越兴奋.本来.net猿只是在透过家里那田子窗看外面的世界,但是看着海峡对岸的苹果园越来越茂盛,实在不想再去做一只宅猿了.于是,.net猿决定搭上小鲸鱼的渡轮到苹果园去看 ...
随机推荐
- HAProxy advanced Redis health check---ref
http://blog.exceliance.fr/2014/01/02/haproxy-advanced-redis-health-check/ HAProxy advanced Redis hea ...
- solidity合约面向对象
1. 属性[状态变量]的访问权限 public internal[合约属性默认的权限] private 说明:属性默认访问全向为internal,internal和private类型的属性,外部是 ...
- bootstrap dialog对话框,完成操作提示框
1. 依赖文件: bootstrap.js bootstrap-dialog.js bootstrap.css bootstrap-dialog.css 2.代码 BootstrapDialog.co ...
- markdown语法简单总结
最常用的十个MarkDown语法总结: 标题:只要在这段文字前加 # 号即可 # 一级标题 最大 ## 二级标题 ### 三级标题 无序列表:在文字前加上 - 或 * 有序列表:在文字前加1. 2. ...
- 05.while循环的练习
练习1: namespace _05.while循环练习01 { class Program { static void Main(string[] args) { //打印100次"努力学 ...
- hibernate从零开始到各种映射
ORM(对象/关系数据库映射) 对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.它完成了面向对象的编程语言到 ...
- SQL语句执行与结果集的获取
title: SQL语句执行与结果集的获取 tags: [OLEDB, 数据库编程, VC++, 数据库] date: 2018-01-28 09:22:10 categories: windows ...
- 前端如何使用proxyTable和nginx解决跨域问题
最近经常遇到跨域的问题,有时候问题虽然解决了,但是还是会有些模棱两可概念不清,于是在网上看了一些教程结合实际使用,做个笔记. 1.跨域原因 浏览器的限制 跨域(协议/域名/端口的不同) XMLHttp ...
- 【数据库】3.0 MySQL入门学习(三)——Windows系统环境下MySQL安装
1.0 我的操作系统是window10 专业版 64位.,不过至少windows7以上系统都是一样的. 关于MySQL如何下载,请参考博文: [数据库]2.0 如何获得MySQL以及MySQL安装 h ...
- Stage6--Python简单爬虫
正则表达式简单介绍 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 字符 ...