ORM系列之二:EF(5) Model First
前面我们已经介绍过EF中Code First开发模式,简而言之,就是不管三七二十一直接写代码,不过对于很多开发人员来说,可能并不习惯这样来开发,并且安装标准的开发流程,应该是先建模再进行编码,当然EF也是支持这样做的,那我们今天就简单介绍一些现有模型的开发模式——Model First。
具体步骤如下:
1. 新建一个控制台程序,叫做“EF.ModelFirstSample”。
2.安装EF,因为我们之前已经安装了EF,所以打开NuGet包管理器界面直接安装到新的工程中,如果没有安装,要自己去安装。
3.创建模型
新增“现有项”,选中“数据”下的“ADO.NET实体数据模型”。
从打开的窗体中,选择“空EF设计器模型”。
完成之后,我们就可以看到EF的模型设计器面板,右键,新增实体,输入如下信息:
选中Blog实体,右键添加两个属性,分别为Name和Url,完成之后如下:
参照上述步骤,新增Post实体,并且添加Title和Content属性,再在设计面板上右键为Blog和Post实体增加关联关系,如下:
4.生成数据库
至此,我们的简单模型已经设计好,现在可以在设计面板右键,点击“根据模型生成数据库”
在弹出的窗体中配置好连接的数据库
一切顺利的话,点击“下一步”,此时就可以看到建表语句了,如下图:
点击完成之后,我们可以在vs新打开的窗体中可以看到最终生成SQL语句,这个时候只是生成了SQL语句,但是并没有真正执行,还需要手动点击一下执行:
OK,我们的模型已经成功创建。
5.读写测试
我们已经有了模型,并且基于此模型已经生成好了数据库,现在可以根据这个模型进行读写操作。
下面代码,主要是向Blog表中插入一条数据,并且读取出来,具体代码实现如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace EF.ModelFirstSample
{
class Program
{
static void Main(string[] args)
{
using (var db = new BlogModelContainer())
{
var blog = new Blog { Name = "test Name",Url="testUrl" };
db.BlogSets.Add(blog);
db.SaveChanges(); var query = from b in db.BlogSets
orderby b.Name
select b; foreach (var item in query)
{
Console.WriteLine(item.Name);
} Console.ReadKey();
}
}
}
}
运行之后我们去数据库查看,可以发现已经成功添加了一条记录,并且成功读取。
6.处理模型改变
Model First模式下的模型改变之后,只需要在设计面板中右键点击“根据模型生成数据库”,和之前生成数据库一样,生成脚本之后要手动执行。
如上是为Blog增加一个Author属性,更新的数据库Blog中可以看到多出一个Author字段。
ORM系列之二:EF(5) Model First的更多相关文章
- ORM系列之二:EF(1)
目录 1. EF是什么 2. 如何获取EF 3. EF有哪些主要模式 EF是什么 EF全称为Entity Framework,是微软推荐的一种数据库访问技术,属于重量级的ORM框架,功能非常强大,目前 ...
- ORM系列之二:EF(4) 约定、注释、Fluent API
目录 1.前言 2.约定 2.1 主键约定 2.2 关系约定 2.3 复杂类型约定 3.数据注释 3.1 主键 3.2 必需 3.3 MaxLength和MinLength 3.4 NotMapped ...
- ORM系列之二:EF(3) 数据库连接
目录 1.前言 2.Code First默认连接 3.Code First指定数据库 4.自定义连接 前言 在介绍EF的Code First模式时候,我们没有修改任何配置,运行之后自动在LocalDb ...
- ORM系列之二:EF(2)Code First
目录 1. Code First是什么? 2. Code First 简单示例 3. 数据存储 4. 迁移 Code First是什么 Code First 顾名思义就是先写代码,当然不是乱写,而是按 ...
- 【疯狂造轮子-iOS】JSON转Model系列之二
[疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...
- ORM系列之Entity FrameWork详解
一. 谈情怀 从第一次接触开发到现在(2018年),大约有六年时间了,最初阶段连接数据库,使用的是[SQL语句+ADO.NET],那时候,什么存储过程.什么事务 统统不理解,生硬的将SQL语句传入SQ ...
- ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
ASP.NET MVC深入浅出系列(持续更新) 一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...
- CRL快速开发框架系列教程二(基于Lambda表达式查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- 在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持)
在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持) 发布时间: 2015-02-27 00:16 1.spice的USB重定向 1.1 介绍 使用usb重定向,在clie ...
随机推荐
- Excel 点滴积累
1.Excel中截取邮件@之后的字符 MID(text, start_num, num_chars) FIND(find_text,within_text,start_num) Right(strin ...
- ubuntu 创建用户
http://www.jb51.net/article/45848.htm 创建用户
- 由一段字符串中查找URL引出——正则表达式
需求很简单,是从一段文本中匹配出其中的超链接.基本的做法就是用正则表达式去匹配.但是有这样一个问题. 网上大部分的识别URL的正则表达式url末尾有空格的情况下可以正确识别.比如这样的情况: &quo ...
- struts2+jsp+hiberbate 双重遍历
今天弄了个双重遍历,由于自己水平有限,做了好久才搞定. 例子如下:也不算是例子,简要代码吧 action中有属性: private List<Contents> content; 其中co ...
- Mybatis实现数据的增删改查(CRUD)
什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索.MyBat ...
- IBatis.Net使用总结(一)-- IBatis解决SQL注入(#与$的区别)
IBatis解决SQL注入(#与$的区别) 在IBatis中,我们使用SqlMap进行Sql查询时,需要引用参数,在参数引用中可以使用两种占位符#和$.这两种占位符有什么区别呢? (1):#***#, ...
- Android客户端性能优化(魅族资深工程师毫无保留奉献)
本文由魅族科技有限公司资深Android开发工程师degao(嵌入式企鹅圈原创团队成员)撰写,是degao在嵌入式企鹅圈发表的第一篇原创文章,毫无保留地总结分享其在领导魅族多个项目开发中的Androi ...
- SwipeRefreshLayout下拉刷新简单用例
自己的下拉刷新组件 下拉刷新并自动添加数据 MainActivity package com.shaoxin.myswiperefreshlayout; import android.graphics ...
- Android开发环境(IDE)
一:Eclipse 1.装JDK: 2.装Eclipse://应与JDK同为32/64位. 3.装ADT: 4.装android sdk: 推荐下载ADT bundle包(包含Eclipse,Andr ...
- POJ3279 Fliptile(暴力)
有一种暴力是这样的,枚举一边,确定另一边. 这一题是这么解的,枚举第一行所有翻转情况,然后剩下几行其实是确定的,因为前i行翻转方式确定后只能通过第i+1行的翻转来改变第i行的状态,于是依次模拟求出剩下 ...