.Net開源資料庫設計工具Mr.E For Linq (EF 6.1) 教程(一)

来源:http://www.cnblogs.com/IWings/archive/2016/08/27/5813424.html
-Advertisement-
Play Games

Linq的好處非常明顯,不僅把資料庫訪問層真正做到面向對象,而且也可以把系統的許可權封裝到資料庫訪問層去了。 微軟目前穩定的Linq框架是Entity Framework 6.1,我自己編寫了一個資料庫工具Mr.E,可以用來設計資料庫結構,並且把資料庫結構編譯成Entity Framework的對象, ...


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裡面的特性

 

我文章裡面提到的下載項,都在http://www.cnblogs.com/IWings/p/5814468.html 因為會不時更新,上面有顯示上次更新的時間,大家可以及時更新

需要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以及和它同目錄的所有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自帶那種方式去做


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 現在需要匹配 [color=#000000],以"[color"開頭,以"[/color]"結束,中間字元數量不限制,最後返回所有匹配的下標。 代碼如下: ...
  • 在上篇隨筆《基於Metronic的Bootstrap開發框架經驗總結(12)--頁面鏈接收藏夾功能的實現》上,我介紹了鏈接收藏夾功能的實現,以及對收藏記錄的排序處理。該篇隨筆主要使用功能按鈕的方式移動收藏記錄,功能雖然實現的還算不錯,不過文章出來後,有讀者同行指出可以利用直接拖動的方式實現排序更方便... ...
  • Linq To Objects - 如何操作字元串 開篇語: 上次發佈的 《LINQ:進階 - LINQ 標準查詢操作概述》(90+贊) 社會反響不錯,但自己卻始終覺得缺點什麼!“紙上得來終覺淺,絕知此事要躬行”,沒錯,就是實戰!這次讓我們一起來看看一些操作字元串的技巧,也許能引我們從不同的角度思考 ...
  • 1.建立級聯刪除 Mr.E的級聯刪除並非資料庫自帶那個級聯刪除,而是Mr.E自帶的,所以它能觸發你C#裡面編寫的觸發器。 首先,建立級聯刪除關係,如下圖有兩個表,UserInfo和UserDocument, UserDocument表依靠UserID欄位,和UserInfo聯繫起來。現在我要實現,當 ...
  • 今天閑著沒事,研究了一下線上更新程式版本的問題。也是工作中的需要,開始不知道如何下手,各種百度也沒有找到自己想要的,因為我的需求比較簡單,所以就自己琢磨了一下。講講我的需求吧。自己在IIs上發佈了一個網站,這個網站僅僅只是內部使用的,網站的內容就是我的另外一個程式(就叫A程式吧)的打包發佈的文件放進 ...
  • 《C#基礎知識鞏固》 一、特性是什麼東東 二、什麼是反射、反射可以做些什麼 三、依賴註入是什麼 四、可空類型Nullable<T>到底是什麼鬼 五、談擴展方法的理解 六、你必須知道的EF知識和經驗【推薦】 七、你知道C#中的Lambda表達式的演化過程嗎 八、Linq表達式、Lambda表達式你更喜 ...
  • 註:本組件適用於.net2.0+的winform項目 樣子: 實際效果比這gif順滑,建議下載文末的Tester體驗 介紹: 如圖所見,這種提示在網頁、手機上用的較多,相比正經的消息框(如MessageBox),我認為好處有: 不需要用戶對消息本身做出響應,點啥【確定】什麼的 不阻塞、不幹預用戶的後 ...
  • Quart 的 API Quartz API 中的關鍵介面和類如下: IScheduler—與調度器(scheduler)進行交互的主要 API; IJob—被組件繼承和實現,由調度器來執行的介面; IJobDetail—通常被用於定義任務實例; ITrigger—對於給定的任務定義出了它將被執行的... ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...