注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

ORM的分析之三Dapper的应用之一初步入门  

2012-08-08 21:30:43|  分类: NET(C#) |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

ORM的分析之三Dapper的应用之一初步入门

网上的ORM的东西非常多,但是这个大家推荐的很多而且他是相对来说轻型的,因此觉得比以前封装数据库还要好用一些,又可以拿到源码自己畅所欲言的在里面修改,管他对与不对呢,所以还是把这个小框架拿过来,想在实际的工程中实践一下。

这个比起IBATIS来说,可以说是太简单了,从网上下来SqlMapper.cs这个文件,直接编译就可以了。官方的网址:

http://code.google.com/p/dapper-dot-net/

http://code.google.com/p/dapper-dot-net/source/browse/Dapper/SqlMapper.cs

测试源码网址:

http://code.google.com/p/dapper-dot-net/source/browse/Tests/Tests.cs

扩展的网址:(就是在官方的基础上自己修改了,更简单易用?强大)

https://github.com/tmsmith/Dapper-Extensions

把那个下载的文件编译成DLL,直接就可以用了。记得using Dapper;

这里自己生成一个实体类:

需要注意的是:实体类的字段名称和实际数据库的字段名称一定要相同,切记。

 

 

    [System.Data.Linq.Mapping.Table(Name = "Person")]

    public class Person

    {

        [System.Data.Linq.Mapping.Column(Name = "PER_ID", IsPrimaryKey = true)]

        public int PER_ID

        {

            get;

            set;

        }

        public Test test

        {

            get;

            set;

        }

        public string PER_FIRST_NAME

        {

            get;

            set;

        }

        public string PER_Last_NAME

        {

            get;

            set;

        }

        public DateTime PER_BIRTH_DATE

        {

            get;

            set;

        }

        public Double? PER_WEIGHT_KG

        {

            get;

            set;

        }

        public Double? PER_HEIGHT_M

        {

            get;

            set;

        }

 

    }

    [System.Data.Linq.Mapping.Table(Name = "Test")]

    public class Test

    {

        [System.Data.Linq.Mapping.Column(Name = "id")]

        public int id { get; set; }

        [System.Data.Linq.Mapping.Column(Name = "name")]

        public string name { get; set; }

    }

 

然后创建数据库的DAL层类:

    public class SqlDalControl

    {

        public class Dog

        {

            public int? Age { get; set; }

            public Guid Id { get; set; }

            public string Name { get; set; }

            public float? Weight { get; set; }

 

            public int IgnoredProperty { get { return 1; } }

        }

        public string connectstring = "Data Source=(local);Initial Catalog=MyTest;User Id=sa;Password=123456;";

        public SqlConnection con = null;

        Person p = new Person();

 

        public SqlDalControl()

        {

            con = new SqlConnection(connectstring);

            con.Open();

        }

        public List<Person> Execute()

        {

            int iId = 3;

            List<Person> person = con.Query<Person>("select * from Person",null).ToList<Person>();

           

            var d = con.Query<Person>("select * from Person where PER_ID = @id", new { id=(int?)iId});

            return person;

        }

        public int Excute()

        {

            var dd = con.Query<Person, Test, Person>("select * from Person,Test where Person.PER_ID=Test.id ", (p, t) => { p.test = t; return p; }).ToArray();

            var vTemp = dd.First();

            vTemp.PER_FIRST_NAME.Equals("joy");

 

 

            return 0;

        }

        public void SetIdentity(IDbConnection conn, Action setId)

        {

            dynamic identity = con.Query("SELECT @@IDENTITY AS Id").Single();

            //T newId = (T)identity.Id;

           // setId(newId);

        }

    }

这个简单吧,真得就这么简单,高深的下一步来。

筚路蓝缕,以启山林。

其作始也简,其将毕也必巨。

  评论这张
 
阅读(10079)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017