程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#基礎系列:實現自己的ORM(構造我自己的ORM)(1)

C#基礎系列:實現自己的ORM(構造我自己的ORM)(1)

編輯:關於C語言

構造我自己的ORM

通過前面兩章的描述,我相信很多朋友都已經明白 我了下面將要討論到的ORM的實現方法了,那就是根據自定義Attribute來定義 O/R Mapping規則,然後通過反射來動態獲取此規則,動態構造SQL語句。

由於這個小東西(ORM)出生在深圳,所以我想來想去,她應該有個深圳 的名字,所以我就叫她“MiniORM”。不知道各位認為如何?

MiniORM采用的是ONE_INHERIT_TREE_ONE_CLASS(一個繼承樹對應於一個 表)的結構,雖然這種結構容易導致數據冗余,但是這種結構很簡單。另,本 MiniORM 僅僅考慮一個表一個PK,一個FK的情況。

MiniORM結構如下,為 了更便於理解和使用,我使用了3個類:

1、OrmWriter:負責將實體對象 (比如前面章節說的Person)插入數據庫和修改數據庫中對應的記錄。

2 、OrmRemover:負責根據實體對象,刪除指定的記錄;

3、OrmReader: 負責根據實體對象,讀取指定的記錄;

上面就是MiniORM的3個主要類。下面我們就詳細地根據前面的描述一 步步構造她。我們這裡還是以前面說的Person為例進行說明。

通過本系 列第一章,我們知道,對象不但存在繼承關系,特別在實際的應用中還存在包含 關系,比如一個Person包含兩個Hand(手)類,包含一個Head(頭)類等,我們 的Person在數據庫中應該有一個ID,為了更加方便使用和討論,此ID在MiniORM 中是一個int以及自動增長類型(ID INDENTITY(1,1))。這些都是我們的 MiniORM應該考慮的范圍。

我們對我們的Person做修改:

[DataObjectAttribute("Person")]
public class Person
{
  private int _ID;
  private string _Name;
   private int _Age;
  private string _Sex;
  private Head _Head;
  private Hand _LeftHand;
  private Hand _RightHand;
  public int ID
  {
    get { return _ID; }
    set { _ID = value; }
  }
   public Head Head
  {
    get { return _Head; }
     set { _Head = value; }
  }
  public Hand LeftHand
  {
    get { return _LeftHand; }
     set { _LeftHand = value; }
  }
  public Hand RightHand
  {
    get { return _RightHand; }
     set { _RightHand = value; }
  }
   [DataFIEldAttribute("name", "NvarChar")]
   public string Name
  {
    get { return this._Name; }
    set { this._Name = value; }
  }
   [DataFIEldAttribute("age", "int")]
  public int Age
  {
    get { return this._Age; }
     set { this._Age = value; }
  }
  [DataFIEldAttribute ("sex", "NvarChar")]
  public string Sex
  {
    get { return this._Sex; }
    set { this._Sex = value; }
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved