一.前言 公司原本有一个"xx系统",ORM使用EntityFramework,Code First模式.该系统是针对某个客户企业的,现要求该系统支持多个企业使用,但是又不能给每个企业部署一份(难以维护),只能想办法从代码层面去解决这个问题. 二.思路 在原有的数据表增加外键,标记该数据属于哪个企业.这代码改动会非常大,之前的查询修改代码都需要增加外键筛选的逻辑.这显然不合理. 动态分库.每个企业注册时,为他生成一个独立的数据库,企业登录时切换到他对应的数据库.这样就完全不用修改以前的…
导读:在上篇博客中,介绍了使用SQL字符拼接的方式,实现动态建库建表的方法.这样做虽然也能够实现效果,但是,太麻烦,而且,如果改动表结构,字段的话,会对代码修改很多.但是EF给我们提供了一种代码先行的方法,极大程度上的方便了应用. 一.EF的3种工作方式 1.1,Model First 这种EF工作流模式仅仅在实体数据库不存在的情况下使用,使用设计器进行Model 先行开发,开发过程为: 1.在EF设计器里创建model 2.通过model生成实体Database 3.通过model自动生成类c…
一.业务分析 以我们平时注册今目标为例,我们在注册今目标的过程中,具体步骤是这样的: 图1 今目标登陆流程 详细解释一下: 第一步:注册界面.输入手机号或者邮箱,点击确定进入基本信息界面. 第二步:基本信息.完善用户的基本信息,点击注册完成注册.其中我们要说的建库建表就是这这一步实现的 第三步:完成信息.用户完成注册后,弹出提示框,告知用户自己被分配的企业号,账号和密码.  二.代码设计 首先,我们使用.NET MVC + EF架构,先创建三个界面. 图2 创建三个界面 其次,根据数据库生成Co…
导读:在最近接手的项目(高效云平台)中,有一个需求是要当企业用户注册时,给其动态的新建一个库和表.刚开始接手的时候,是一点头绪都没有,然后查了一些资料,也问了问上一版本的师哥师姐,终于有了点头绪.目前是有两种方案,第一:应用SQL字符串拼接:第二,使用codeFirst.现在,总结第一种方案. 一.总体概述 既然是使用SQL字符串拼接,那么就涉及到我们操作SQL 创建数据库和表的逻辑了.当我们建库的时候,需要判断这个库是否存在,然后是不存在则创建.同理,建表也是如此.所以,在这里就涉及到了4个方…
最近一直在做权限系统的动态建库,动态建库,说白了就是在你点击"注册"按钮的时候,根据你输入的信息,来创建一个企业所需要的数据库的过程,因为现阶段并没有提供购买等功能,所以暂时咱们是把所有数据库都建好,以供使用. 原理 整个itoo使用的是mysql 的数据库,现阶段的建库是建立在两句非常简单的sql语句之上的,第一句是: 复制旧表结构到新表 CREATE TABLE 新表 SELECT * FROM 旧表 复制旧表数据到新表 INSERT INTO 新表 SELECT * FROM 旧…
Code First给我们的程序开发带了很多便利,之前的版本中一个比较不大方便的地方是数据库迁移,麻烦不说,往往还和上下文相关,在不同的版本之间的数据库进行迁移还很容易失败,并且一旦失败还不大容易找到解决方案.可能是微软已经意识到这个不足,现在Entity Framework已经支持数据库自动迁移了,比之前的方案要简单太多,下面简单的介绍一下如何使用自动迁移. 开始迁移之前: 开始迁移之前,需要将要迁移的项目设置为默认项目.这一步非常重要,否则后面会出现许多莫名其妙的错误,它包括两个步骤 在解决…
假设数据库软件已经安装好,现在没有图形界面无法用dbca安装数据库,那么用手工建库,数据库名为edw 创建目录 [oracle@localhost ~]$ mkdir -p /u01/app/oracle/admin/edw/adump [oracle@localhost ~]$ mkdir -p /u01/app/oracle/oradata/edw [oracle@localhost ~]$ mkdir -p /u01/app/oracle/flash_recovery_area 创建密码文…
2879: [Noi2012]美食节 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1366  Solved: 737[Submit][Status][Discuss] Description CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽管所有的菜品都很可口,厨师做菜的速度也很快,小M仍然觉得自己桌上没有已经摆在别人…
第一步:写实体类 第二步:写一个实体操作类,此类必须继承Dbcontext,此处的属性,将会在初始化时(第一次作,增,删,改的时候),生成相应的表. 第三步:运行程序,会自动建表 注意: 若实体类发生改变,要记着,启动Nuget 控件台,做以下三个步骤来更新表结构 1. 2.用命令 enable-migrations 启用Codefirst 上述操作后,会看到代码中,多了这个文件夹和相关文件 3.修改Configuration.cs这个代码中的 4.用命令 update-database 更新数…
----------------------------目录------------------------------ EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性 (2015-07-22 17:30) EntityFramework 5.0 CodeFirst 教程02-删除和修改/架构改变异常的处理 (2015-07-14 17:50) EntityFramework 5.0 CodeFirst 教程01-搭建环境和快速上手 (2015-0…