.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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...