打开深蓝医生的国庆大礼包!

打开深蓝医生国庆大礼包,里面是一个orm,我就看看了看这个开源的orm,我觉得很多人应该只看看文章并没有下载也没有看源码,我建议有时间的还是看看好

国庆大礼包地址:节前送礼:PDF.NET(PWMIS数据开发框架)V3.0版开源

 

深蓝医生orm源代码的好处

1: 医生的代码几乎所有的地方都有注释,而且是中文的,这是很多国外开源代码所没有的,也是很多国内开源代码所没有的

2 :医生的代码已经写了5年,有很多地方的代码写了有注掉了,改为新的代码,发现看这样的代码还是比较有意思的

3:医生的orm是这样的,开始计划写个sqlhelper=》ADO.NEThelper=》queryhelper=》orm

4:我认为,医生的代码是我能看懂的一个开源的项目1

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了

posted @ 2012-10-28 11:41  互联网Fans  阅读(2630)  评论(7编辑  收藏  举报