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根据数 ...
随机推荐
- Linux 添加新用户账号并赋予root权限
除了root用户之外,通常需要为每个管理创建各自的用户账号,方便每个管理员登录使用, 步骤如下: 1. 添加新用户账号 useradd mary.lee 2. 为新用户账号设置密码 passwd ...
- APIO2018 被屠记
占坑 day0 10:40才起床 感觉一点也不好 下午去了趟80中拿牌子然而没有到,白浪费我颓废时间. day0.5 早上第一课讲二分凸优化,有点瞌睡 第二课讲匹配相关,感觉这篇文章涵盖了大部分内容 ...
- vue动态切换组件
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>& ...
- Gedit —— 推荐于NOI系列考试(NOIlinux)的轻量编程环境
由于Vim,Emacs上手艰难,Guide又特别难用,Anjuta还闪退 故推荐一款轻量化的编程环境:Gedit(文本编辑器) 配置方法: 1:在桌面上新建main.cpp,打开方式选择使用gedit ...
- 实现简单的promise
只考虑成功时的调用,方便理解一下promise的原理promise的例子: 1. 接下来一步步实现一个简单的promise step1:promise 接受一个函数作为构造函数的参数,是立即执行的,并 ...
- Kafka监控工具kafka-monitor v0.1简要介绍
Kafka Monitor为Kafka的可视化管理与监控工具,为Kafka的稳定运维提供高效.可靠.稳定的保障,这里主要简单介绍Kafka Monitor的相关功能与页面的介绍: Kafka Moni ...
- 异步使用委托delegate --- BeginInvoke和EndInvoke方法
当我们定义一个委托的时候,一般语言运行时会自动帮委托定义BeginInvoke 和 EndInvoke两个方法,这两个方法的作用是可以异步调用委托. 方法BeginInvoke有两个参数: Async ...
- spring-cloud-Zuul学习(二)【基础篇】--典型配置【重新定义spring cloud实践】
-- 2019-04-15 20:22:34 引言 上一节是一个最基本的zuul网关实例,它是整个spring-cloud生态里面“路由-服务”的一个缩影,后续也就是锦上添花.这节主要讲述zuul的一 ...
- Tomcat问题
1 Tomcat控制台中文乱码 打开tomcat/conf/logging.properties 找到java.util.logging.ConsoleHandler.encoding = UTF-8 ...
- SpringMVC的配置和使用
SpringMVC的配置和使用 什么是SpringMVC? SpringMVC是Spring家族的一员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于 ...