【ITOO 3】.NET 动态建库建表:实用EF框架提供的codeFirst实现动态建库
导读:在上篇博客中,介绍了使用SQL字符拼接的方式,实现动态建库建表的方法。这样做虽然也能够实现效果,但是,太麻烦,而且,如果改动表结构,字段的话,会对代码修改很多。但是EF给我们提供了一种代码先行的方法,极大程度上的方便了应用。
一、EF的3种工作方式
1.1,Model First
这种EF工作流模式仅仅在实体数据库不存在的情况下使用,使用设计器进行Model 先行开发,开发过程为:
1.在EF设计器里创建model
2.通过model生成实体Database
3.通过model自动生成类classes
1.2,Database First
与Model First刚好相反,是仅在数据库存在的情况下使用,进行数据库的先行开发,过程为:
1.创建数据库
2.在EF设计器里通过已经存在的Database逆向生成工程模型model
3.通过model自动生成类classes
1.3,Code First
这种EF工作流模式既可以在实体数据库本身还不存在下,又可以在实体数据库本身已经存在情况下进行代码的现行开发:
情况一:实体数据库本身还不存在的情况下开发步骤:
1.通过代码编写类以及映射关系,即创建了Model
2.通过Model生成实体数据库
3.可以应用自EF4.3以后版本提供的Migration(数据迁移)来使我们的实体数据库开发在代码先行的基础上逐步完善。
情况二:实体数据库本身已经存在下的开发步骤:
1.使用反向数据库工具生成代码类以及映射关系,即Model
2.修改Model,可以对Model做一些后期封装
3.同样可以应用Migration进行现行数据库的修改工作,并不影响以前的数据,只要为Migration修改提供默认值即可。
二、Code First实现动态建库
本来是需要我们自己手写类及映射关系,但是EF给我们提供了一种便利:VS——工具——扩展和更新——Entity Framework Power Tools Bata 4。
安装完了之后,在建好的类库上右击——Entity Framework—reverse engineer code first,然后按照提示,一步一步的创建代码。
2.1,需要修改的部分
注意:this.Database.CreateIfNotExists()是调用EF提供的方法,并不是自己创建的。
2.2,使用
<span style="font-family:KaiTi_GB2312;font-size:18px;"> public ActionResult CreateDatabase(string txtName,string txtSex) {
Guid guidDatabaseLastNum = Guid.NewGuid();
string strDbName = "TestCrateDatabase" + guidDatabaseLastNum;
//连接字符串
string connectionString = "Data Source=*******; User=sa;Password=********;Initial Catalog=" + strDbName + ";Integrated Security=True";
TestCrateDatabaseContext newDb = new TestCrateDatabaseContext(connectionString);
return View();
}
}
}</span>
点击按钮,新库就 被创建好了!
注意点:1,确保系统中Entity Framework的版本一致,不然会出现很多的问题。
2,注意创建表单中的字段是否含有关键字,当必须包含关键字 的时候,一定要人为的进行处理。
三、总结
其实,自己什么都没有做。而且这种实现,真的是超级简单,但是,之前自己为什么一直都不会,还很恐惧。。。我想这次是真的验证了不怕不知道,就怕不知道的名言了。本身EF是给我们提供这种便利的,但是由于自身的知识不足,都不知道有这些东西,所以才是一直都做不出来。
【ITOO 3】.NET 动态建库建表:实用EF框架提供的codeFirst实现动态建库的更多相关文章
- MYSQL动态查询拼接的表名的SQL脚本实现(MYSQL动态执行SQL脚本)
可以使用MYSQL的预处理逻辑:https://dev.mysql.com/doc/refman/8.0/en/sql-syntax-prepared-statements.html 例如: pr ...
- 使用CodeFirst实现动态建库
一.业务分析 以我们平时注册今目标为例,我们在注册今目标的过程中,具体步骤是这样的: 图1 今目标登陆流程 详细解释一下: 第一步:注册界面.输入手机号或者邮箱,点击确定进入基本信息界面. 第二步:基 ...
- {MySQL的库、表的详细操作}一 库操作 二 表操作 三 行操作
MySQL的库.表的详细操作 MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf ...
- day 36 MySQL的库、表的详细操作
MySQL的库.表的详细操作 MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset u ...
- [转]数据库中间件 MyCAT源码分析——跨库两表Join
1. 概述 2. 主流程 3. ShareJoin 3.1 JoinParser 3.2 ShareJoin.processSQL(...) 3.3 BatchSQLJob 3.4 ShareDBJo ...
- Kettle定时抽取两个库中的两个表到目标库SYS_OPLOG表
A库a表(红色为抽取字段): 关联用户表: B库b表(红色为抽取字段): 关联用户表 C目标库SYS_OPLOG表(c表) 利用kettle抽取A库a表(具体名称见上图),B库b表的上面红色框起来 ...
- MySQL的库、表的详细操作
目录 MySQL的库.表的详细操作 一 库操作 二 表操作 MySQL的库.表的详细操作 本节目录 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset ...
- mysql语句1-创建库和表
一.DDL数据定义语言 就是对书库内部的对象进行创建.删除.修改等操作的语言. 关键字:create drop alter 1.连接数据库 mysql -u用户名 -p -h指定主机(不指定默认是 ...
- 非关心数据库无法进行连表查询 所以我们需要在进行一对多查询时候 无法满足 因此需要在"1"的一方添加"多"的一方的的id 以便用于进行连表查询 ; 核心思想通过id进行维护与建文件
非关心数据库无法进行连表查询 所以我们需要在进行一对多查询时候 无法满足 因此需要在"1"的一方添加"多"的一方的的id 以便用于进行连表查询 ; 核心思想通 ...
随机推荐
- 18.3.1获得Class对象
package d18_3_1; /** * Java中的java.lang.Class,简单理解就是为每个java对象的类型标识的类, * 虚拟机使用运行时类型信息选择正确的执行方法,用来保存这些运 ...
- 转 Oracle最新PSU大搜罗
Quick Reference to Patch Numbers for Database/GI PSU, SPU(CPU), Bundle Patches and Patchsets (文档 ID ...
- RHEL6.5---LVS(IP-TUN)
实验环境: 主机名 IP 所需软件 master eth0==>192.168.30.160(RIP) eth0:1==>192.168.30.130(VIP) ipvsadm node ...
- Jquery 操作HTML5自定义属性data-*
HTML5自定义属性规范的写法<a data-roleid="12"></a>,也可以直接写<a roleid="12">& ...
- php数组与字符串转换
1.将字符串转换成数组的几个函数: (1)explode(separate,string) 示例:$str = "Hello world It's a beautiful day" ...
- 我的关于phoneGap的安装及测试。
一.PhoneGap简介 PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台.它使开发者能够利用 iPhone,Android,Palm,S ...
- Sql Server 2008R2升级 Sql Server 2012 问题
环境: Windows server 2008 r2 Standard +SqlServer2008R2 内网环境需要升级为SQL server 2012 升级安装时提示版本不支持 网上查询相关问题 ...
- Python3基础教程(十六)—— 迭代器、生成器、装饰器
在这个实验里我们学习迭代器.生成器.装饰器有关知识. 这几个概念是 Python 中不容易理解透彻的概念,务必把所有的实验代码都完整的输入并理解清楚其中每一行的意思. 迭代器 Python 迭代器(I ...
- CentOS 6.5下安装Python 3.5.2(与Python2并存)
CentOS 6.5下安装Python 3.5.2(与Python2并存) 安装步骤 1,准备编译环境(环境不对,在安装过程中可能遇到各种问题.比如wget无法下载链接的文件) yum groupin ...
- JavaEE-09 Ajax与jQuery在JavaEE项目中的使用
学习要点 JavaScript实现Ajax jQuery实现Ajax JSON JSON-LIB FastJSON JavaScript实现Ajax 认识Ajax 旧版百度地图 百度搜索自动补全 百度 ...