.Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(一)

Linq的好处非常明显,不仅把数据库访问层真正做到面向对象,而且也可以把系统的权限封装到数据库访问层去了。

微软目前稳定的Linq框架是Entity Framework 6.1,我自己编写了一个数据库工具Mr.E,可以用来设计数据库结构,并且把数据库结构编译成Entity Framework的对象,可以说是自动化的code first模式。

Mr.E运行于.Net 4.5版本,大概功能如下:

1.网络版本,支持多人同时设计数据库;

2.目前支持Sql Server、MySql、Sqlite数据库;

3.支持数据库结构更新;

---你的项目发布后,如果再修改数据库结构,可以使用Mr.E,对已经发布的数据库进行结构的更新。

4.支持数据库类型变更;

---比如原来是Sql Server数据库,可以在开发中途变更为MySql数据库,而不需要变更代码。

5.支持一个数据库结构,多个数据库类型;

---比如你的项目,它分为网络版和单机版,网络版使用Sql Server数据库,单机版使用Sqlite数据库,那么你可以一直以Sql Server类型进行数据库结构设计,到发布的时候,把结构更新到另一个sqlite数据库上即可。

6.关闭EF的数据跟踪,提高性能

7.支持类似触发器的代码,通过代码,可以捕捉全局数据表的insert update delete事件;

---这样,相当于可以用c#去写触发器了

8.支持定义索引

9.支持级联删除,级联删除的数据同样支持7里面的特性

需要Mr.E源码的朋友可以加我qq索取。(896872647)

安装步骤:

1.配置Mr.E的IIS服务站点

点击下载ECWeb.rar文件,解压后,在IIS创建一个网站执行它,端口可以任意定义,例如:666,应用池必须是.Net 4.5或以上版本

2.下载客户端

下载Mr.E.rar文件,解压后,直接运行EJClient.exe,弹出登录窗口,输入上一步iis里面配置的网站路径,用户名默认:sa,密码是:1

3.创建数据库

首先,需要新建一个工程,点击菜单【project】,新建一个工程

然后,展开新建的project,在Databases点击右键,新建一个数据库

注意:如果是sqlite类型数据库,如上图,数据库放在F:\SqliteLinqTest,那么必须确认IIS有读写F:\SqliteLinqTest文件夹的权限,否则无法创建

3.创建数据表

先在【数据模块】那里点击右键,添加一个目录,然后在目录下面添加一个模块

  ----->

然后双击“基本信息”模块,在它的区域里面去添加数据表。这样子,数据表就可以分类管理,不像sql server那样,所有表都列在一起

--->

4.编译数据库,生成dll文件

右键点击TestDB->【编译】,生成它的dll文件。

5.在代码中访问数据库

下载公用dll文件EntityDB.rar

新建一个.Net工程,引用EntityDB.dll、EntityFramework.dll、刚才生成的TestDBDataObjects.dll、.Net自带的System.Data.Linq

项目编译后,需要把EntityDB.rar里面所有dll,包括x86 x64文件夹都拷贝到运行目录,bin\Debug下面,那些都是运行时所需要的

下面是C#访问数据库的代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace LinqTest1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            using (var db = new Test.DB.TestDB(@"data source=""F:\SqliteLinqTest\TestDB""", EntityDB.DatabaseType.Sqlite))
            {
                //开始事务
                db.BeginTransaction();
                try
                {
                    //添加数据
                    var user = new Test.UserInfo();
                    user.UserName = "张三";
                    user.Password = "123";
                    db.Update(user);
                    Debug.WriteLine("张三的id是" + user.id);

                    //更新数据
                    var zhangSan = (from m in db.UserInfo
                                    where m.UserName == "张三"
                                    select m).FirstOrDefault();
                    zhangSan.Password = "678";
                    db.Update(zhangSan);

                    //删除数据
                    var data = db.UserInfo.FirstOrDefault(m => m.UserName == "李四");
                    if (data != null)
                    {
                        db.Delete(data);
                    }

                    //提交事务
                    db.CommitTransaction();
                }
                catch
                {
                    //回滚事务
                    db.RollbackTransaction();
                    throw;
                }
            }

        }
    }
}

从代码中可以看到,因为我关闭了EF的数据跟踪,所以,数据的 insert update delete等,需要调用db.Update() db.Delete()去实现,不能用EF自带那种方式去做

时间: 2024-10-16 08:49:36

.Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(一)的相关文章

.Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(三)更新已发布的数据库

项目发布到服务器后,如果在后期,数据库的结构发生变更,如何更新到服务器呢? 首先,右键点击数据库,导出结构脚本文件 把脚本文件和 Mr.E.rar拷贝到服务器,在服务器解压Mr.E,运行其中的“更新数据库结构.bat” 选择脚本文件,选择数据库类型,填写数据库连接字符串,点击[开始更新] 更新不同类型的数据库 如果你设计的时候,是Sql Server类型数据库,但是想生成一个sqlite数据库,或者更新一个sqlite数据库,该怎么办? 和上面那个方法一样,只要选择sqlite数据库类型,填写正

.Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(二)级联删除和触发器

1.建立级联删除 Mr.E的级联删除并非数据库自带那个级联删除,而是Mr.E自带的,所以它能触发你C#里面编写的触发器. 首先,建立级联删除关系,如下图有两个表,UserInfo和UserDocument, UserDocument表依靠UserID字段,和UserInfo联系起来.现在我要实现,当UserInfo里面的数据删除时,自动删除UserDocument表里面UserID=UserInfo.id的那些数据,应该怎么做呢? 首先,双击UserInfo打开它的属性编辑器,点击[级联删除]设

.Net开源数据库设计工具Mr.E For Linq (EF 6.1) 教程(四)枚举类型的字段

我们通常有些int类型字段,通过不同的数字,表示不同的意思,为了让程序可读性更高.做UI的时候更加方便,用Enum表示字段值是个不错的东西. 例如,有个sex字段,int类型,表示性别,1是男,2是女,那么数据库里面的值就是1或者2了,但是,我们把这些数据显示给客户的时候,总是需要做一些转换,类似下面这样的代码 if(user.Sex == 1) alert("性别是男"); else if(user.Sex == 2) alert("性别是女"); 总是要写这样的

数据库设计工具

1.PowerDesigner 数据库的构建工具 表:表关系以及表之间的关联关系 存储过程:设计具体的存储过程 视图:设计所需的视图 2.PdmReader 也是PowerDesigner的阅读器吧,是系统设计时给开发人员的一个试图查看 ====================================================== 1.开发系统,以前的数据库的设计文档都是word的形式,其表之间的关联关系看起来不是特别的清楚,对于新接收项目的开发人员很是麻烦,有了这些东西,可以保证

严重推荐一个免费开源数据库建模工具软件 --OpenSystemArchitect 4.0

嘿嘿,对于我这样的新手,这个工具还是很令人兴奋的. 真的是术业有专攻啊.关键还是免费开源 EXCEL,VISO,PPT,PS,CD,FREEHAND不是不可以,只是.人家还是专业点,方便点.. OpenSystemArchitect 4.0

网页版数据库设计工具wwwsqldesigner

下载地址:http://www.cubrid.org/wwwsqldesigner 下载后,放入Apache网站根目录,访问localhost/wwwsqldesigner-master/直接进入设计界面: 初始化为英文界面,选择option->language可更改界面显示语言. 1.添加表:点击添加表,输入名称和描述 2.修改字段大小和类型:双击表上面的字段 3.添加新字段:点击工具栏上面的添加列

数据库设计工具-powerdesigner

一.PowerDesigner导出SQL,注释为空时以name代替 操作步骤 1. 2. 3.将Value中的内容全部替换为如下 %20:COLUMN% [%National%?national ]%DATATYPE%[%Unsigned%? unsigned][%ZeroFill%? zerofill][ [.O:[character set][charset]] %CharSet%][.Z:[ %NOTNULL%][%IDENTITY%? auto_increment:[ default %

MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具

  MySQL  Workbench是一款专为MySQL设计的ER/数据库建模工具.它是著名的数据库设计工具DBDesigner4的继任者.你可以用MySQL  Workbench设计和创建新的数据库图示,建立数据库文档,以及进行复杂的MySQL 迁移 MySQL Workbench是下一代的可视化数据库设计.管理的工具,它同时有开源和商业化的两个版本.该软件支持Windows和Linux系统,下面是一些该软件运行的界面截图:

界面原型设计工具开源软件

界面原型图绘制工具 Pencil 开源原型设计工具 Framer [商业]原型制作软件 Axure RP 忙死了 ,反正是收藏的别人的,自己顺着链接看原文去. 界面原型设计工具开源软件