ModelFirst开发
首先介绍一下ModelFirst开发方式,什么时候才用呢!在没有数据库时,可以借助EF设计模型,然后根据模型同步完成数据库中表的创建,这就是Model First开发方式,简而言之就是先有模型再有表。
首先是添加ADO.NET 实体模型,然后选择空模型,再然后创建实体,添加字段,切记一定要添加主键,主键既可以是自增长的数字类型,也可以是Guid类型
然后就是添加字段,除主键外的字段叫添加标量属性,在设计标量字段时一定要记得设计其最大范围,不然会严重影响性能
添加实体,也就是表的关系,步骤是单击工作面板空白处新增——>关联,在添加关联对话框中进行设置,其中值得注意的是导航属性不要去掉,因为后面用他来查询将会变得非常方便
导航属性,顾名思义就是根据这个属性可以找到一个和他关联的对象实体。
这些以上步骤完成,按Ctrl+s组合键保存,vs会自动生成三个类
然后右击工作空白区,根据模型生成数据库,并执行SQL脚本创建数据库
然后我们进行代码测试:
#region 增加方法
static void AddTestData()
{
using (ModelFirstModelContainer db = new ModelFirstModelContainer())
{
Customer _Customer = new Customer { Name = "楚留香", Age = , CompanyName = "大旗门", Telphone = "" };
Order _Order = new Order { Amount = , CreateTime = DateTime.Now, OrderNo = "", CustomerID = _Customer.ID };
Order _Order2 = new Order { Amount = , CreateTime = DateTime.Now, OrderNo = "", Customer = _Customer };
Product _Product = new Product { ID = Guid.NewGuid(), Name = "牛栏1段", Price = , Weight = , Customer = new List<Customer>() { _Customer } };
db.Customer.Add(_Customer);
db.Order.Add(_Order);
db.Order.Add(_Order2);
db.Product.Add(_Product);
if (db.SaveChanges() > )
{
Console.WriteLine("添加成功!");
}
else
{
Console.WriteLine("添加失败!");
}
}
}
#endregion
#region 查询方法
static void SearchCusOrder()
{
using (ModelFirstModelContainer db=new ModelFirstModelContainer())
{
//var _OrderList = from o in db.Order
// where o.Customer.Name == "楚留香"
// select o;//先查Order表信息,然后直接通过导航属性customer来过滤 导航属性查询
var _OrderList1 = from c in db.Customer join o in db.Order on c.ID equals o.CustomerID where c.Name == "楚留香" select o;//通过Join查询 Console.WriteLine("客户楚留香的所有订单如下:");
_OrderList1.ToList().ForEach(o=>Console.WriteLine(string.Format("订单号:{0},订单金额:{1},订单创建时间:{2}",o.OrderNo,o.Amount,o.CreateTime)));
Console.ReadKey();
}
}
#endregion
其中新增方法中db.SaveChanges()默认是已经开启了事务的,而且在这之前都只进行了一次数据库的连接,这种类似批处理的操作大大地提升了性能
查询方法中用了两种查询方法。一种是导航属性查询,另一种就是join查询
其中导航属性查询相当于SQL中的子查询,join查询就相当于SQL中的Inner join查询一样,在数据量大的情况下使用导航属性查询,在数据量不大的情况下就使用join查询
以上的开发环境是vs2012+SQL2012
ModelFirst开发的更多相关文章
- codefirst数据迁移技术,在保留数据库数据下实现对模型的修改并映射到数据库
一前言 这是我的处女作,写的不好的地方还望指出共同讨论.EF的数据访问方式有三种DbFirst,ModelFirst,还有本文要提到的CodeFirst 三者都是以ORM的方式建立.本人之前学习的.n ...
- EntityFramework 基本模式和Code-First的简单使用
1.Database-First Database First就是首先建立好数据库,或者存在现成的数据库也可以.然后在vs中添加ADO.Net实体数据模型,找到需要的数据库和表.它是以数据库设计为基 ...
- LLBL Gen Pro 5.0 企业应用开发入门
Solutions Design 公司于2016年5月发布了LLBL Gen Pro 5.0,这个新版本的发布出乎于我的意料.我的猜想是从4.2升级到4.5,再升级5.x版本,主版本号的变更会给原有客 ...
- Entity Framework7 有哪些不同?现在开发到什么程度了?
Entity Framework7之开篇 一.Entity Framework7 简介 Entity Framework7简称EF7,是微软正在开发的最新的在.NET应用中首选的数据访问技术.它是轻量 ...
- 《ASP.NET MVC4 WEB编程》学习笔记------Entity Framework的Database First、Model First和Code Only三种开发模式
作者:张博出处:http://yilin.cnblogs.com Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发 ...
- XAF应用开发教程(一) 创建项目
XAF是DevExpress公司的快速开发框架,全称eXpress Application Framework,是企业信息系统的开发利器,快速开发效果显著,在.net框架中,笔者至今没有找到一款可以与 ...
- EF下CodeFirst、DBFirst与ModelFirst分析
EF4.1有三种方式来进行数据操作及持久化.分别是Database-First,Model-First,Code-first:1.Database First是基于已存在的数据库,利用某些工具(如Vs ...
- EF框架搭建小总结--ModelFirst模型优先
前言:去年刚工作的时候,也是刚刚正式接触.net,当时了解了EF以及三种开发模式,Database First.Model First .Code First.公司用的开发模式是Database Fi ...
- 深入浅出EF之ModelFirst和DBFirst
在上篇博文中,小编主要简单的介绍了一下EF的一些基础知识,其中,小编蜻蜓点水的提了一下ModelFirst和DBFirst,ModelFirst先设计实体,然后根据模型生成数据库,DBFirst根据数 ...
随机推荐
- 【Java并发编程二】Java并发包
1.Java容器 1.1.同步容器 Vector ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时 ...
- Do-Now—团队 冲刺博客六
Do-Now-团队 冲刺博客六 作者:仇夏 前言 终于从四级的考试中解脱了(不过我觉得可能凉凉,呵呵),我们的APP制作也迎来了最后的两天. 自己觉得自己其实没有干成什么事情,代码什么的大都是队友们写 ...
- CGI、FastCGI、PHP-FPM联系与区别(理解总结自其他博文)
参考:http://blog.csdn.net/tyrantbear/article/details/52077321 参考:http://mp.weixin.qq.com/s?src=11& ...
- 通配符的匹配很全面, 但无法找到元素 'context:property-placeholder' 的声明。
在Spring相应包导入正确的前提下,出现这个异常,是因为我们在引入命名空间的时候,没有正确引入它的DTD解析文件,以上面的context为例,解决办法如下: 在引入 xmlns:context=&q ...
- 打包java程序生成exe
打包java程序生成exe 目标 我们知道c++的控制台程序编译运行以后就会生成一个exe可执行文件,在电脑上可以直接双击运行,但是java是跨平台的语言,编译运行以后的字节码文件.class是和平台 ...
- 微信小程序统计分析
在微信公众平台社区看到一个不错的东西,小博统计:https://www.wxappdev.com/:用于微信小程序统计分析.
- 5 个免费的受欢迎的 SQLite 管理工具【申明:来源于网络】
5 个免费的受欢迎的 SQLite 管理工具 包含内容: SQLite Expert – Personal Edition SQLite Expert 提供两个版本,分别是个人版和专业版.其中个人版是 ...
- JavaScript 异步编程的前世今生(上)
前言 提到 JavaScript 异步编程,很多小伙伴都很迷茫,本人花费大约一周的业余时间来对 JS 异步做一个完整的总结,和各位同学共勉共进步! 目录 part1 基础部分 什么是异步 part2 ...
- Python 爬虫利器 Selenium
前面几节,我们学习了用 requests 构造页面请求来爬取静态网页中的信息以及通过 requests 构造 Ajax 请求直接获取返回的 JSON 信息. 还记得前几节,我们在构造请求时会给请求加上 ...
- centos7启动流程(从加电开始)
图片来自于https://blog.csdn.net/qq_27754983/article/details/75212666 1. UEFI或BIOS启动 服务器加电后,CPU 自动重置成初始状态, ...