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根据数 ...
随机推荐
- vue笔记-列表渲染
用v-for把一个数组对应为一组元素 使用方法:v-for="(item,index) in items"//也可以使用of替代in { items:源数组 item:数组元素迭代 ...
- [Log函数]C++log函数使用
先引入头文件#include<cmath> 以e为底:log(exp(n)) 以10为底:log10(n) 以m为底:log(n)/log(m)
- react组件中刷新组件小技巧
在开发过程中,经常遇到组件数据无法更新,例如:当你用同一个表格展示不同数据的时候,当点击第5页后,再点击另外一份数据时发现还在第五页,并没有回到第一页. 怎么能让一个组件每次数据不一样时都重新加载呢, ...
- yarn一直在跑一个用户为dr.who的application
现象: 访问yarn:8088页面发现一直有任务在跑如图: 用户为dr.who,问下内部使用人员,都没有任务在跑: 结论: 恭喜你,你中毒了,攻击者利用Hadoop Yarn资源管理系统REST AP ...
- IndentityServer4
官网: https://identityserver4.readthedocs.io/en/latest/index.html 比较好的中文博客: 晓晨Master: https://www.cnbl ...
- 关于部署php遇到的坑
业务突然要启动一个久不使用的PHP项目, 发现部署到centos7上后 各种报错 就是不行. 我怀疑是apache或者php问题 就重新安装 编译安装也试过就是不行. 只能按笨办法 在测试环境安装了a ...
- LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] <c++>
LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] <c++> 给出排序好的 ...
- Python基础之模块+异常
一.模块相关概念 1.定义:包含一系列数据.函数.类的文件,通常以.py结尾. 2.作用:让一些相关的数据,函数,类有逻辑的组织在一起,使逻辑结构更加清晰.有利于多人合作开发. 3.模块导入方式(三种 ...
- xgboost 多gpu支持 编译
xgboost 多gpu支持 编译 Ubuntu 18.04.2Linux 4.15.0-46-genericgcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 cuda ...
- 微信小程序60秒倒计时
微信小程序发送短信验证码后60秒倒计时功能,效果图: 完整代码 index.wxml <!--index.wxml--> <view class="container&qu ...