打开深蓝医生国庆大礼包,里面是一个orm,我就看看了看这个开源的orm,我觉得很多人应该只看看文章并没有下载也没有看源码,我建议有时间的还是看看好
国庆大礼包地址:节前送礼:PDF.NET(PWMIS数据开发框架)V3.0版开源
深蓝医生orm源代码的好处
1: 医生的代码几乎所有的地方都有注释,而且是中文的,这是很多国外开源代码所没有的,也是很多国内开源代码所没有的
2 :医生的代码已经写了5年,有很多地方的代码写了有注掉了,改为新的代码,发现看这样的代码还是比较有意思的
3:医生的orm是这样的,开始计划写个sqlhelper=》ADO.NEThelper=》queryhelper=》orm
5:可以发现很多问题。。。。。。。。。。。
6:医生在博客园,找他方便,在一个群里,找他更方便O(∩_∩)O~
医生orm的基本增查改
ps:医生的demo做了很烂,因为医生的哲学没学好,把orm的特色和orm的基本功能搞反了,demo里面都是特色,而没有基本功能
sql
CREATE TABLE [dbo].[userinfo](
[id] [int] IDENTITY(1,1) NOT NULL,
[username] [nvarchar](50) NOT NULL,
[userpassword] [nvarchar](50) NOT NULL,
[userbrief] [ntext] NOT NULL,
[userimg] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_userinfo] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
用医生的工具生成相关的实体类即可
插入demo
protected void Page_Load(object sender, EventArgs e)
{
SuperMarket.userinfo objuserinfo = new SuperMarket.userinfo();
EntityQuery<SuperMarket.userinfo> query = new EntityQuery<SuperMarket.userinfo>(objuserinfo,true);
objuserinfo.username = "互联网fans";
objuserinfo.userpassword = "1234567";
objuserinfo.userimg = "http://tp2.sinaimg.cn/1271114553/180/5614484664/1";
objuserinfo.userbrief = @"博客园菜鸟级博主,七脸阁主题APP开发者,专注于WebApp的开发和研究,
提倡通过命题作文寻找创新的灵感和创意的点子。
新浪应用搜索最新作品:表情帝。";
//query.Save();
// Response.Write(objuserinfo.id);
int id= query.Insert(objuserinfo);
Response.Write(id);
/*问题1: 这样写代码 无效
SuperMarket.userinfo objuserinfo = new SuperMarket.userinfo();
objuserinfo.username = "互联网fans";
objuserinfo.userpassword = "1234567";
objuserinfo.userimg = "http://tp2.sinaimg.cn/1271114553/180/5614484664/1";
objuserinfo.userbrief = @"博客园菜鸟级博主,七脸阁主题APP开发者,专注于WebApp的开发和研究,
提倡通过命题作文寻找创新的灵感和创意的点子。
新浪应用搜索最新作品:表情帝。";
EntityQuery<SuperMarket.userinfo> query = new EntityQuery<SuperMarket.userinfo>(objuserinfo,true);
query.Save();
Response.Write(objuserinfo.id);
*
* 问题2: 用save方法统一了insert 和update 不是很习惯
* 问题3: Insert 方法返回整数,很容易误解,以为返回的是自增id
*/
/*
User zhang_san = new User();
//zhang_san.Uid = 5;
EntityQuery<User> query = new EntityQuery<User>(zhang_san,true );
zhang_san.Name = "张三1";
query.Save();//新增
Console.WriteLine("新增实体对象OK");
zhang_san.Birthday = new DateTime (1977,3,10);
query.Save();//修改
Console.WriteLine("修改实体对象OK");
注:EntityQuery<T>(T,true) 表示当前实体类的持久化方式为“新增”。
* ps 下我学.NET学了好长时间才知道什么叫持久化,但是这个持久化放在rom里面貌似不合适。。。。。
*/
}
update demo
protected void Page_Load(object sender, EventArgs e)
{
SuperMarket.userinfo objuserinfo = new SuperMarket.userinfo();
//OQL query = new OQL(objuserinfo);
//OQL result = query.Select().Where(query.Condition.AND(objuserinfo.id, "=", 1)).END;
//objuserinfo.id = 1;
//EntityQuery<SuperMarket.userinfo>.Fill(objuserinfo);
//objuserinfo.userbrief = "我修改" + DateTime.Now.ToString();
objuserinfo.id = 1;
//EntityQuery<SuperMarket.userinfo> query2 = new EntityQuery<SuperMarket.userinfo>(objuserinfo,false);
EntityQuery<SuperMarket.userinfo> query2 = new EntityQuery<SuperMarket.userinfo>(objuserinfo, true);
query2.FillEntity(objuserinfo);
objuserinfo.userbrief = "我修改" + DateTime.Now.ToString();
//int falg= query2.Save(objuserinfo);
int falg = query2.Update(objuserinfo);
//List<SuperMarket.userinfo> mylist = EntityQuery<SuperMarket.userinfo>.QueryList(result);
// 不知道主键情况下 获取列表?
/*
OQL q = OQL.From(emp)
.Select(emp.WorkNumber,emp.EmployeeName)
.Where(emp.JobName)
.OrderBy(emp.EmployeeName, "asc")
.END;
List<Employee> list= EntityQuery<Employee>.QueryList(q);
*/
}
select demo
protected void Page_Load(object sender, EventArgs e)
{
//获取一个实体的信息
SuperMarket.userinfo objuserinfo = new SuperMarket.userinfo();
objuserinfo.id = 1;
EntityQuery<SuperMarket.userinfo> query2 = new EntityQuery<SuperMarket.userinfo>(objuserinfo, true);
query2.FillEntity(objuserinfo);
//获取一个list
OQL query = new OQL(objuserinfo);
OQL result = query.Select().Where(query.Condition.AND(objuserinfo.id, ">", 1)).END;
List<SuperMarket.userinfo> mylist = EntityQuery<SuperMarket.userinfo>.QueryList(result);
}
基本 的增改查 OK了