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猿决定搭上小鲸鱼的渡轮到苹果园去看 ...
随机推荐
- 使用selenium时碰到的某一个坑
如图:
- Java 匿名内部类 & 内部类
一.JAVA中内部类和匿名内部类的区别 内部类:内部类可以是static的或者非static的,static内部类只能包含静态方法和静态类变量,只能访问外部类的静态元素,内部类可以实例化,多次使用. ...
- time&datetime模块
在Python中,和时间处理相关的模块有time,datatime,calendar(不常用)三个. UTCC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间, ...
- pdf转为html查看pdf.js
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- iOS Touch ID 简易开发教程
转自:NsstringFromName 支持系统和机型 iOS系统的指纹识别功能最低支持的机型为iPhone 5s,最低支持系统为iOS 8,虽然安装iOS 7系统的5s机型可以使用系统提供的指纹解锁 ...
- SharePoint 2013 - Using Web Proxy
用于在SharePoint中调用其它网站服务时使用. 1. 需要引用sp.js 和 sp.runtime.js文件: 2. 需要用到SP.WebRequestInfo,SP.WebProxy,和SP. ...
- PopupWindow简单使用
如图是效果图 当点击 “点我”的按钮是 会弹出 如图的 弹窗 补充为PopupWindow设置一个显示动画和消失的动画 先在anim的文件下分别设置显示和消失的动画 <?xml versio ...
- Entity Framework:“无法加载指定的元数据资源
System.Data.Entity.Core.MetadataException:“无法加载指定的元数据资源 CodeFirst方式使用EF,写入数据时报错.System.Data.Entity.C ...
- (阿里巴巴)数据库连接池——Druid (未完持续更新)
Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,有不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色的性能,也 ...
- asyncio标准库7 Producer/consumer
使用asyncio.Queue import asyncio import random async def produce(queue, n): for x in range(1, n + 1): ...