C# 資料操作系列 - 4. 自己實現一個ORM
阿新 • • 發佈:2020-05-14
# 0. 前言
在之前的幾篇內容中,我們瞭解瞭如何通過ADO.NET 訪問資料庫,如何修改、新增資料。如何通過DataSet和DataAdapter獲取資料,我們將在這一篇試試自己實現一個簡單的ORM框架或者說ORM工具類。
涉及到的知識點:
- 反射(初級)
- ADO.NET 已有知識
# 1. ORM
那麼,問題來了,什麼是ORM?ORM全稱 Object Relational Mapping,翻譯過來就是物件關係對映。是一種通過描述物件與資料庫之間對映關係的資料,將物件儲存到資料庫中的技術。
在C#中,曾經Entity Framework光芒萬丈,遮蓋了其他ORM框架的光輝(甚至如今都是如此)。
後來慢慢湧現除了其他的一些ORM框架,進一步豐富了市場。所以現有比較流行的大概有以下幾種:
- Dapper 一個輕量的ORM框架
- Entity Framework/Entity Framework Core 功能完備的框架
- Nhibernate Java平臺上著名的Hibernate的.net版
- 等等
嗯,這是我最近找到的創作組還在更新的幾個框架,當然還有其他的很多有趣好用的ORM框架。歡迎各位補充哈。
這一篇的主要目的不是介紹這些框架(這是以後的內容),而是通過我們自己實現一個類ORM框架來了解底層核心。
# 2. 設計
我們先分析一下,如果我們設計一個實體物件與資料庫之間轉換的工具類應該具有哪些功能?
- 一個屬性與資料庫欄位的對映關係
- 增刪改查的SQL模板
- 查詢結果與物件的轉換
# 3. 實現
首先,宣告一個類,因為不能僅支援一種型別,所以這個類的所有與資料庫有關的方法都是泛型方法,或者這個類是泛型類,所以定義為泛型類:
```c#
public class