惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
V
V2EX
博客园 - 【当耐特】
V
Visual Studio Blog
宝玉的分享
宝玉的分享
D
DataBreaches.Net
Engineering at Meta
Engineering at Meta
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
N
News | PayPal Newsroom
Schneier on Security
Schneier on Security
I
InfoQ
博客园 - Franky
The GitHub Blog
The GitHub Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Commits to openclaw:main
Recent Commits to openclaw:main
AI
AI
WordPress大学
WordPress大学
Webroot Blog
Webroot Blog
L
LangChain Blog
Help Net Security
Help Net Security
V2EX - 技术
V2EX - 技术
TaoSecurity Blog
TaoSecurity Blog
O
OpenAI News
月光博客
月光博客
H
Hacker News: Front Page
F
Full Disclosure
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
SecWiki News
SecWiki News
S
Security Affairs
博客园 - 司徒正美
MyScale Blog
MyScale Blog
Vercel News
Vercel News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Y
Y Combinator Blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
J
Java Code Geeks
Simon Willison's Weblog
Simon Willison's Weblog
Recent Announcements
Recent Announcements
D
Darknet – Hacking Tools, Hacker News & Cyber Security
I
Intezer
The Last Watchdog
The Last Watchdog
博客园_首页
C
Check Point Blog
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - mapserver

MicroOrm.Net和现有ORM产品的对比 MicroOrm.Net(8) Table.Query() - Distinct、Skip & Take MicroOrm.Net(7) Table.Query() - Group By & Having MicroOrm.Net(6) Table.Query() - Join & Order By MicroOrm.Net(5) Table.Query() - Select MicroOrm.Net(4) Table.Query() - Where MicroOrm.Net(3) Database、Table、Column、Expression、Math&MathE MicroOrm.Net(1) 总览 Asp.net服务器控件编程(6) ViewState(二)——ViewState用法和IStateManager Asp.net服务器控件编程(5) 复杂属性 Asp.net服务器控件编程(4) 呈现 Asp.net服务器控件编程(3) ViewState(一)——asp.net控件的精华之一 Asp.net服务器控件编程(2) 来做个热身运动吧 Asp.net服务器控件编程(1) 开篇、基础 Asp.net服务器控件编程 总览 TextDataSource(3) — 请把我的数据更新回去 TextDataSource(2) — 翠花,上“数据” TextDataSource(1) — DataSourceControl内幕 .NET组件编程(10) 补充 ISupportInitialize
MicroOrm.Net(2) 基础及动态特性
mapserver · 2012-04-07 · via 博客园 - mapserver

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的链接字符串:

<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也可以这么简单。