MicroOrm.Net(2) 基礎及動態特性
MicroOrm.Net主頁:
http://code.google.com/p/micro-orm-net/
MicroOrm.Net系列隨便目錄總覽:
http://www.rzrgm.cn/mapserver/archive/2012/04/07/2436129.html
在傳統的orm中,我們操作Table的時候,必須先有Model的定義,但是在MicroOrm.Net中,我們可以不定義Model,來直接操作Table。
假如我們在db中有OrderDetail這樣一張表:
CREATE TABLE [dbo].[OrderDetail]( [OrderDetailId] [nvarchar](50) NOT NULL, [OrderId] [nvarchar](50) NULL, [ProductId] [nvarchar](50) NULL, [Qty] [int] NULL, CONSTRAINT [PK_OrderDetail] PRIMARY KEY CLUSTERED ( [OrderDetailId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
在你的項目中引用MicroOrm.Net,修改項目的config文件,配置db的鏈接字符串:
<connectionStrings>
<add name="db" connectionString="..." providerName="System.Data.SqlClient"/>
</connectionStrings>
編寫下面代碼:
var db = Database.Open("db");
var od = db.OrderDetail.Query()
.First();
string orderId = od.OrderId;
string productId = od.ProductId;
我們來分析下上面代碼:
var db = Database.Open("db"); 我們創建了一個db對象,此對象為DynamicObject。
var od = db.OrderDetail.Query().First(); 因為db對象是一個DynamicObject,所以它的OrderDetail屬性,在運行的時候,才會被解析并且和數據庫里的OrderDetail表自動產生關聯,Query方法是我們查詢的一個基準方法,最后再返回表里的第一行記錄。
string orderId = od.OrderId; 因為od也是DynamicObject,它的OrderId屬性,也是在運行時來解析的。
當然如果你定義了Model,那么也能輕松的把DynamicObject轉換為Model強類型對象:
public class OrderDetail
{
public string OrderDetailId { get; set; }
public string OrderId { get; set; }
public string ProductId { get; set; }
public int Qty { get; set; }
}
// 方式1
OrderDetail od = db.OrderDetail.Query()
.First()
.To<OrderDetail>();
// 方式2
od = db.OrderDetail.Query()
.First<OrderDetail>();
至此我們一個簡單的Demo就完成了,我們沒有定義Model,沒有Model-Table Mapping,Orm也可以這么簡單。
浙公網安備 33010602011771號