解剖實體框架 3 與資料庫互動

2021-08-26 01:42:42 字數 1864 閱讀 4435

實體框架乙個基本的功能就是要與資料庫互動,與資料庫互動當然可以利用現有的一些基本技術,比如dotnet的ado.net等。這裡有幾個要點:

1)要封裝底層的資料庫互動通道,這個可以利用現有的資料庫訪問技術,比如ado.net。

2)構造與資料庫互動的sql語句,比如新增,刪除,修改,查詢等.做得比較好的,需要支援關聯查詢等。當然能做到aef中的esql那樣,還是有點難度。

下面是乙個例項,這裡我只構造插入語句,並實現現資料庫插入實體的功能示意(底層資料庫訪問封裝這裡不講,這個有很多例子)。

為了簡單起見,我們假設實體類的類名就是資料庫裡對應表的表名,實體的屬性對應資料庫表裡的字段,下面就是**:

//實體類。

public class amodel

public string field2

public int age

public string name

}///

/// sql語句執行,可以採用普通類,也可以採用抽象介面,便於不同資料庫的訪問.

///

public static class databasehelper

}///

/// 實體資料庫基本操作,這裡只是模擬實體插入資料庫的情形,其它的操作其實類似,更新的話可以採用關鍵字做條件,衝突檢查欄位也可包含在條件裡面.

///

public static class dboperation

databasehelper.executesql(thesql.tostring(), theparams.toarray());

//根據屬性名獲取屬性值,可以單獨放在乙個輔助類裡。

private static object getpropertyvalue(t model, string propertyname)

}///

/// sql及引數構建器,這裡構造sql語句的時候,在這裡,預設類名就是資料庫表名,屬性名就是資料庫欄位名。但在實際構造這種框架的時候,可以採用元屬性或者配置檔案來實現這個功能。比如linqtosql,dbcontext就採用元屬性,aef,hibernate就是採用xml格式的配置檔案,但這些東西都是為了更好更準確的構造sql語句.構造這種

///sql語 句 需要知道的包括表名,欄位名,字段型別,語言型別與字段型別間的對照等。

///

}return "insert into " + thetype.name.toupper() + "(" + thesql1.tostring() + ") values(" + thesql2.tostring() + ")";

}//c#型別與資料庫型別的對照可以通過map檔案完成,也可以通過元屬性完成,個人覺得元屬性的利用比較好,雖然說元屬性不是很靈活,

//但減少了構造的檔案依賴, 在大型的專案中其實是有好處的,至少是便於管理的。

private static sqldbtype getdbtype(type type)

return sqldbtype.nvarchar;}}

有的時候我們將實體物件稱之為概念模型,而物件在資料庫裡的儲存結構稱之為物理模型,在這兩個模型之間存在著一種對映關係(概念名稱與物理名稱的對映,物件屬性與欄位名之間的對映,以及物件之間關係的對映),這其實就是所謂的orm(物件關係模型)。上面的例子這種對映是利用命名規範來完成,實際上做的時候可以採用配置檔案或者元屬性來完成,對於大專案時,配置檔案的管理本身也會成為乙個問題,因此我覺得用元屬性資料來進行會比較好。

上面的實現只是乙個簡單的示例,實際做的時候需考慮得東西會比較多,比如需要封裝資料庫差異(底層訪問差異,sql語句方言),實體與資料庫之間的對照(map),sql語句及引數快取問題(沒必要每次都構造)等,但不管怎麼說,基本的原理還是一樣的,關鍵技術主要是反射機制的應用。

解剖實體框架 3 與資料庫互動

實體框架乙個基本的功能就是要與資料庫互動,與資料庫互動當然可以利用現有的一些基本技術,比如dotnet的ado.net等。這裡有幾個要點 1 要封裝底層的資料庫互動通道,這個可以利用現有的資料庫訪問技術,比如ado.net。2 構造與資料庫互動的sql語句,比如新增,刪除,修改,查詢等.做得比較好的...

解剖實體框架 1 實體與操作類

1 什麼是實體?在我們進行系統構造的目標業務領域裡,有一些物件,主要依賴外界進行管理或者處理,這些物件主要處在被加工或者處理的地位,這樣的物件我們稱之為實體物件,而這類物件以資料為住,一般只具有屬性 或者叫域 不包含或只包含少量的內生方法 主要是一些自我處理的方法,這些方法不會操作其它物件,不產生對...

解剖實體框架 1 實體與操作類

1 什麼是實體?根據我的理解,實體應該是指那些主要依賴外界進行管理或者處理的一類物件,這類物件以資料為住,一般只具有屬性 或者叫域 而不包含或只包含少量的內生方法 主要是一些自我處理的方法,這些方法不會操作其它物件,不產生對其它外界物件的依賴,比如轉殖,格式化等 直白的講,實體就是資料類或者叫結構體...