你的位置:首页 > ASP.net教程

[ASP.net教程].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自带那种方式去做