MicroOrm.Net主页:
http://code.google.com/p/micro-orm-net/
MicroOrm.Net系列随便目录总览:
http://www.cnblogs.com/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的链接字符串:
编写下面代码:
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();
// 方式2
od = db.OrderDetail.Query()
.First();
至此我们一个简单的Demo就完成了,我们没有定义Model,没有Model-Table Mapping,Orm也可以这么简单。