ModelFirst开发

首先介绍一下ModelFirst开发方式,什么时候才用呢!在没有数据库时,可以借助EF设计模型,然后根据模型同步完成数据库中表的创建,这就是Model First开发方式,简而言之就是先有模型再有表。

首先是添加ADO.NET 实体模型,然后选择空模型,再然后创建实体,添加字段,切记一定要添加主键,主键既可以是自增长的数字类型,也可以是Guid类型

然后就是添加字段,除主键外的字段叫添加标量属性,在设计标量字段时一定要记得设计其最大范围,不然会严重影响性能

添加实体,也就是表的关系,步骤是单击工作面板空白处新增——>关联,在添加关联对话框中进行设置,其中值得注意的是导航属性不要去掉,因为后面用他来查询将会变得非常方便

导航属性,顾名思义就是根据这个属性可以找到一个和他关联的对象实体。

这些以上步骤完成,按Ctrl+s组合键保存,vs会自动生成三个类

然后右击工作空白区,根据模型生成数据库,并执行SQL脚本创建数据库

然后我们进行代码测试:

 1      #region 增加方法
 2
 3
 4         static void AddTestData()
 5         {
 6             using (ModelFirstModelContainer db = new ModelFirstModelContainer())
 7             {
 8                 Customer _Customer = new Customer { Name = "楚留香", Age = 25, CompanyName = "大旗门", Telphone = "18720671285" };
 9                 Order _Order = new Order { Amount = 15, CreateTime = DateTime.Now, OrderNo = "20170624", CustomerID = _Customer.ID };
10                 Order _Order2 = new Order { Amount = 16, CreateTime = DateTime.Now, OrderNo = "20170625", Customer = _Customer };
11                 Product _Product = new Product { ID = Guid.NewGuid(), Name = "牛栏1段", Price = 14, Weight = 22, Customer = new List<Customer>() { _Customer } };
12
13                 db.Customer.Add(_Customer);
14                 db.Order.Add(_Order);
15                 db.Order.Add(_Order2);
16                 db.Product.Add(_Product);
17
18                 if (db.SaveChanges() > 0)
19                 {
20                     Console.WriteLine("添加成功!");
21                 }
22                 else
23                 {
24                     Console.WriteLine("添加失败!");
25                 }
26             }
27         }
28         #endregion

 1  #region 查询方法
 2         static void SearchCusOrder()
 3         {
 4             using (ModelFirstModelContainer db=new ModelFirstModelContainer())
 5             {
 6                 //var _OrderList = from o in db.Order
 7                 //                 where o.Customer.Name == "楚留香"
 8                 //                 select o;//先查Order表信息,然后直接通过导航属性customer来过滤  导航属性查询
 9                 var _OrderList1 = from c in db.Customer join o in db.Order on c.ID equals o.CustomerID where c.Name == "楚留香" select o;//通过Join查询
10
11                 Console.WriteLine("客户楚留香的所有订单如下:");
12                 _OrderList1.ToList().ForEach(o=>Console.WriteLine(string.Format("订单号:{0},订单金额:{1},订单创建时间:{2}",o.OrderNo,o.Amount,o.CreateTime)));
13                 Console.ReadKey();
14             }
15         }
16         #endregion

其中新增方法中db.SaveChanges()默认是已经开启了事务的,而且在这之前都只进行了一次数据库的连接,这种类似批处理的操作大大地提升了性能

查询方法中用了两种查询方法。一种是导航属性查询,另一种就是join查询

其中导航属性查询相当于SQL中的子查询,join查询就相当于SQL中的Inner join查询一样,在数据量大的情况下使用导航属性查询,在数据量不大的情况下就使用join查询

以上的开发环境是vs2012+SQL2012

时间: 2024-10-10 06:14:13

ModelFirst开发的相关文章

EF框架的三种模式

Database First就是先建数据库或使用已有的数据库.然后在vs中添加ADO.Net实体数据模型,设置连接并且选择需要的数据库和表.它是以数据库设计为基础的,并根据数据库自动生成实体数据模型,从而驱动整个开发流程.除生成实体模型和自跟踪实现模型,还支持生成轻型DbContext.这种模式的好处是使用简单,容易上手.比较适合于采用已经存在的数据库进行开发.既通过简单的方式实现了,又重用了数据库. ModelFirst开发模式是指从建立实体数据模型入手,并依据模型生成数据库,从而驱动整个开发

Entity Framework7 有哪些不同?现在开发到什么程度了?

Entity Framework7之开篇 一.Entity Framework7 简介 Entity Framework7简称EF7,是微软正在开发的最新的在.NET应用中首选的数据访问技术.它是轻量级和可扩展的启用新的平台和新的数据存储的实体框架版本.以下的应用: Windows Phone. Windows 应用商店,ASP.NET 5 和传统的桌面应用程序,现在都可以利用的实体框架.EF7除了支持关系型数据库, 还支持如 Azure 表和Redis非关系型数据存储. 从上面我们可以看到以下

EF下CodeFirst、DBFirst与ModelFirst分析

通过项目,我们了解到EF框架有三种数据持久化的方式,也就是标题中我所提到的三种.那么这些方式之间又有什么联系和区别呢? 篇幅原因,本篇博客不再分别介绍每种方法如何实现的了,大家用的时候可以去Sou~一下. 先分别介绍一下这三种方法的联系: 1.Database First是基于已存在的数据库,利用某些工具(如VS提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件.也就是从一个数据库开始,然后生成实体框架和相应代码. 2.Model Firs

深入浅出EF之ModelFirst和DBFirst

在上篇博文中,小编主要简单的介绍了一下EF的一些基础知识,其中,小编蜻蜓点水的提了一下ModelFirst和DBFirst,ModelFirst先设计实体,然后根据模型生成数据库,DBFirst根据数据库生成模型,两个方向都是可以了,两个方向可以相互更新,比如新添加了实体,可以根据模型生成数据库,如果在数据库里面新添加了字段,我们可以从数据库更新模型.在介绍ModelFirst和DBFirst之前,我们先来解决两个问题,EF与linq to sql的关系以及为什么使用linq to sql和EF

LLBL Gen Pro 5.0 企业应用开发入门

Solutions Design 公司于2016年5月发布了LLBL Gen Pro 5.0,这个新版本的发布出乎于我的意料.我的猜想是从4.2升级到4.5,再升级5.x版本,主版本号的变更会给原有客户带来成本上的压力.299欧元的售价对于中小创业公司或大公司并不算便宜,在官网上查了一下最新的报价,如下表所示: Number of licenses Price per license Standard Price per license Plus 1 to 2 € 299.- € 398.- 3

XAF应用开发教程(一) 创建项目

XAF是DevExpress公司的快速开发框架,全称eXpress Application Framework,是企业信息系统的开发利器,快速开发效果显著,在.net框架中,笔者至今没有找到一款可以与之比较的产品.下面以应用为中心,讲述如何应用XAF. 下载与安装,如果你已经安装好了sqlserver和visual studio,请至http://www.devexpress.com 下载试用版,安装完成后即可体验. 我使用的是vs2015+sqlserver 2014(与vs内置一起的). 一

EF3:Entity Framework三种开发模式实现数据访问

前言 Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发流程大相径庭,开发体验完全不一样.三种开发模式各有优缺点,对于程序员没有哪种模式最好,只有哪种模式更适合.接下来我将分别使用这三种开发模式实现同一数据库模型的数据持久化功能.希望通过实践能帮助你找到更适合你的开发模式 Database First Database First开发模式指以数据库设计为基础,并根据数据库自动生成实体数据模型,从而驱动整个开发流程

MVC学习之数据库开发模式:模型优先实例介绍

数据库开发模型之模型优先的步骤如下: 1.在数据库中建立一个空的数据库[不需要建立任何表]     如果不事先创建一个新的数据库,如果在连接数据库那步不选着数据库,默认是在Master数据库中生成表的2.添加ADO.NET实体数据模型     选中Models文件夹.添加--新建项--数据--ADO.NET实体数据模型--取名[文中取名为ModelFirst]--控模型--完成3.修改实体容器名称    双击ModelFirst.edmx,在左边的空白页面上单击右键--属性---修改实体容器名称

eclipse birt报表开发入门

在开发中,报表或多或少会涉及到,有些报表可能比较简单,而有些报表可能很复杂.无论如何,这些报表功能的开发都是可以通过一些公共的组件来实现的,比如我现在所在的这家公司,如果想要制作报表,只需要配置下报表配置下就可以了(这个报表是通过特定实现的报表语言实现了,支持内部自定义的语言,最终将这些相应的数据保存到数据库中,对报表中的一些事物进行了抽象,比如:报表模型, 查询参数.).如果要自己手动的一步一步的编写报表,那么相对会比较麻烦,如果能提供一个框架,只需要进行一些配置就可以完成自定义报表,那岂不很