VS2015 + SQL Server 反向生成实体模型

本文阐述了对象与数据库之间映射相关的基本概念,及如何实现VS+SQL Server环境下从关系自动映射到对象的方法。

一、ORM简介

对象关系映射(Object Relational Mapping,简称ORM,也称O/R Mapping)模式,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

参考:http://www.cnblogs.com/wgbs25673578/p/5140482.html

二、ADO.NET Entity Framework

ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (ORM) 解决方案,现已经包含在 Visual Studio 2008 Service Pack 1 以及 .NET Framework 3.5 Service Pack 1 中发表。

.NET中的数据访问,从大的方面来看数据访问的设计方案基本有如下几类:
1、DataSet
2、手写代码通过ADO.NET2.0连接类与数据库交互
3、ORM组件

参考:http://www.cnblogs.com/xuf22/articles/5513283.html

三、ORM组件:ADO.NET Entity Framework

作为下一代数据访问的技术领导者。Entity Framework的设计很多地方都保留了高扩展性。其最重要的一个改进在于其映射定义的灵活性。由图可以看出,使用Entity Framework可以充分的定义与数据库表映射的实体,并将这个实体直接用于业务逻辑层或作为服务的数据契约。实体设计较其他技术的优势体现在以下几方面:创建ComplexType(CSDL部分有讨论);EntitySet的继承。

使用Entity Framework后,可以将实体类的设计工作完全放在EDM的设计过程中,而不再需要手工写一些大同小异的代码,并且对这个实体模型(包含于EDM中)可以在运行时修改并生效。另外,开发人员与数据库直接打交道的次数将大大减少,大部分时间开发人员只需操作实体模型,框架会自动完成对数据库的操作。

参考:http://www.cnblogs.com/lsxqw2004/archive/2009/05/31/1495240.html

四、ADO.NET Entity Framework:Code First

说一下EF从诞生到现在这几年的发展历程吧。在EF最初的版本中,作为一个ORM组件其通过EDM文件(里面是一些xml)来配置数据库与实体类之间的映射,实现数据进出数据库的控制。最初的版本中只支持Database First,即由已有数据库结构生成EDM,继而得到实体类。后来EF在4.0版本起开始支持Model First即先建立EDM,然后生成数据库。

在4.1版本开始,EF迎来了最大的变化--开始支持Code First模式,值得注意的是Code First不是和Database First或Model First平级的概念,而是和EDM平级的概念。使用Code First不再需要EDM来维护实体与数据库之间的映射关系,这个映射完全通过代码来完成,并在程序开始运行时在内存中建立一个映射模型,这也就是Code First这个名称中Code的含义。

使用Code First一般都是先建立实体然后通过代码配置实体到数据库的映射,继而生成数据库(如果数据库已存在,就不需要再生成数据库,可以直接建立代码映射模型),这也就是所谓的Model First模式。当然Code First也支持Database First,通过工具由现有数据库生成实体,及实体映射数据库的代码。

参考:http://www.cnblogs.com/lsxqw2004/p/4701979.html

五、利用 EntityFramework Reverse POCO Generator 实现 Code First 反向生成实体模型

使用环境:VS2015 + SQL Server

1、安装 EntityFramework Reverse POCO Generator.vsix

2、在VS项目中,引用 EntityFramework

3、在VS项目中,新建项

新建后,自动生成以下文件:

4、安装 DBContent-tangibleT4EditorPlusModellingToolsVS2015.msi(使DBContent.tt内的代码高亮显示)。

5、打开 DBContent.tt,修改配置:

6、打开 Appconfig ,修改配置:

7、保存 DBContent.tt 即可将数据库关系映射到VS实体模型中(在DBContent.cs中查看)

时间: 2024-10-10 16:38:27

VS2015 + SQL Server 反向生成实体模型的相关文章

Powerdesigner逆向工程从sql server数据库生成pdm【转】

Powerdesigner逆向工程从sql server数据库生成pdm 第一步:打开"控制面板"中的"管理工具" 第二步:点击"管理工具"然后双击"数据源(odbc)" 第三步:打开之后,点击"添加" 第四步:选择"sqlserver" 点击"完成" 第五步:跟据自身的情况填写 说明: 名称和描述可以自己命名,服务器就是你的数据库地址(下图) 第六步:填写好登录名和

SQL Server快速生成SQL增删改查语句

你还在手敲代码生成SQL语句吗?你还在为因为马虎出错的SQL语句而感到无语吗?你还在为不知怎样表达复杂的SQL语句而纠结吗?如果你的回答为"是",那你就OUT啦,快来试试应用SQL Server资源管理器快速生成SQL语句吧. 首先,打开SQL Server2008,在菜单栏"查询"下拉菜单中找到"在编辑器中设计查询",如下图: 在打开的查询设计器窗口中添加要进行操作的数据库表. 在添加的表内下方空白部分右键单击鼠标,在弹出菜单中单击"

关于SQL Server 无法生成 FRunCM 线程(不完全)

在五一的前一天,准备启动数据库完成我剩下的项目代码时,数据库配置管理器出现了一个让人蛋疼的问题sqlserv配置管理器出现请求失败或服务器未及时响应关于这个问题的处理方法,经过我两个小时的百度,网上对这个问题的解决方法有两种,一.禁用SQL Server网络配置中的 MSSQLSERVER协议里的VIA协议二.关闭TCP/IP协议然而两个小时,无数帖子的求索告诉了我一个事实,这些东西都解决不了我现在的问题在计算机右键管理点击事件查看器找到应用程序,SQL详细错误日志,虽然在网上可以找到大概,但是

SQL Server中生成测试数据

原文:SQL Server中生成测试数据 简介      在实际的开发过程中.很多情况下我们都需要在数据库中插入大量测试数据来对程序的功能进行测试.而生成的测试数据往往需要符合特定规则.虽然可以自己写一段程序来进行插入数据,但每一个项目就写一个插入数据的程序并不明智.本文主要介绍使用VS2010的数据生成计划在SQL Server中生成测试数据.   生成测试数据的方法      1.手动编辑           在开发过程中,非常少量的数据可以手动插入.这个方法的缺点可想而知-.插入100条数

SQL SERVER 批量生成编号

开始: 在testing中,为了模拟orders,有个要求给数据库dba,如何通过后台数据库脚本快速批量生成orders. 分析 站在数据库角度,批量生成orders,也就是批量生成表中的行数据. sql中,通过cross join 可以把两个table (如 A ,B )组合,形成一个笛卡尔积,如图1 图1 如果,对图1的组合结果,进行一次迭代组合,那么就可以得到一个16行的结果,如图2: 图2 在sql sever 中,通过下面的sql语句分析需要A, B表组合,迭代多少次可以能生成上百万行

SQL Server 动态生成数据库所有表Insert语句

一. 背景 SQL Server,如果我们需要把数据库A的所有表数据到数据库B中,通常我们会怎么做呢?我会使用SSMS的导入导出功能,进行表数据的导入导出,无可厚非,这样的导入非常简单和方便: 但是,当我们的表有上百个,而且有些表是有自增ID的,那么这个时候使用SSMS的话,你需要一个个手动设置(如图1),你要知道,需要设置上百个的这些选项是件多么痛苦的事情,而且最后很可能会因为外键约束导致导入导出失败. (图1) 虽然SSMS在导入导出的最后一步提供了生成SSIS包的功能,但是对于转移数据的需

Entity Framewrok 7beta7中不同版本sql server自动生成分页sql语句的问题

在EF中,使用linq进行分页是很方便的,假如我们有一个EMP表,结构如下: public class Emp { [Key] public Guid No { get; set; } public int Age { get; set; } [Required] [StringLength(50)] public string Name { get; set; } } 如果我们进行分页的话,一般使用Skip和Take方法,这里一行最简单的代码如下: mContext.Emp.OrderBy(e

SQL Server 存储过程生成流水号

SQL Server利用存储过程生成流水号 USE BiddingConfig SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON GO -- ============================================= -- Author: 小爽 -- Create date: 2017-05-25 -- Description: 业务数据KEY生成 -- 构成规则: [区域编号][应用系统编号][版本编号][功能编号][日期戳][流水记录号]

SQL Server高速生成SQL增删改查语句

你还在手写程序生成SQL语句吗?你还在为由于马虎出错的SQL语句而感到无语吗?你还在为不知如何表达复杂的SQL语句而纠结吗?假设你的回答为"是".那你就OUT啦.快来试试应用SQL Server资源管理器高速生成SQL语句吧. 首先,打开SQL Server2008,在菜单条"查询"下拉菜单中找到"在编辑器中设计查询",例如以下图: 在打开的查询设计器窗体中加入要进行操作的数据库表. 在加入的表内下方空白部分右键单击鼠标.在弹出菜单中单击&quo