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根据数 ...
随机推荐
- idea使用阿里工具优化代码+阿里开发手册
idea安装工具 打开插件安装界面 File-Settings-Plugins-Browse repositories... 搜索Alibaba Java Coding Guidelines 进行安装 ...
- Kubernetes系列之Helm介绍篇
本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复[K8s实战]获取 介绍 Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来 ...
- 离校登记网页项目个人总结(Alpha阶段)
个人小结 在Alpha阶段,我和我的小团队六人,经过六天的努力完成了我们最初需求分析里的基本功能,在这里为我们团队的成功表示祝贺.在这个过程中,对于自己的表现觉得既有做的好的方面,也有很多不足需要改进 ...
- ORM框架之SQLAchemy
SQLAchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,即:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果. 1.安装 ...
- 了解vue APi
阳光那么好,何必自寻烦恼,过好每一个当下,一万个美丽的未来抵不过一个温暖的现在. 一.Vue.nextTick(): 该api 是在Dom节点更新结束之后执行的一个延时回调.在修改数据之后,立即使用这 ...
- redis离线集群安装
用一个叫redis-trib.rb的ruby脚本.redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下(redis-xxx/src/).是基于r ...
- 小程序页面跳转传参参数值为url时参数时 会出现丢失
当参数的值为url的时候, ?号 _ 下划线 等等 都会被 截取掉,看不到, 这样在 另一个页面 options中 截取的url就不完全 let url="http://ba ...
- 剑指offer【书】之简历抒写
项目介绍1.剪短的项目背景简短的项目背景,比如项目的规模,开发的软件的功能.目标用户等2.完成的任务这个要写详细,要让面试官对自己的工作一目了然.在用词上要注意区分“参与”和“负责”:如果只就用“负责 ...
- [Swift]LeetCode815. 公交路线 | Bus Routes
We have a list of bus routes. Each routes[i]is a bus route that the i-th bus repeats forever. For ex ...
- linux入门--Linux的应用领域
Linux 似乎在我们平时的生活中很少看到,那么它应用在哪些领域呢?其实,在生活中随时随地都有 Linux 为我们服务着. 网站服务器 用事实说话!访问国际知名的 Netcraft 网站 http:/ ...