MyBatisEntityFramework 简单可个门

  任何一个和数目有关的系统里,数据持久化都是一个不容忽视的问题。

  一直以来,Java 平台来了成百上千 NB 的 ORM
框架,Hibernate、MyBatis等等。.NET 平台达成,ORM
框架这等同块一直从未一个能吊到吃几乎拥有开发人员改掉以拼写 SQL
语句访问数据库的习惯。

  实际上,在 .NET
平台上,也层出不穷的出现了成千上万近乎之玩意儿,比如Nhibernate、Ibatis,还有微软的亲儿子——坑爹的
LinqToSQL。虽然这么多框架,但是真没见了 .NET 平台的 ORM 框架能像 Java
里那样普及。

  所幸,微软而做出来一个儿子——EntityFramework。前几只版没因此过,前几乎上一直了解了6.1.3版的。。感觉,真
TMD 好用。。

  鉴于网上的有所课程都无比教条式,入门时看起非常坑爹,所以用即刻篇心得做啊随笔,供大家共同学习探讨。

 

一如既往、安装框架

  首先,要增长环境。右键项目,可以于 NuGet 里一直设置。如下图:

MyBatis 1

  

  安装完成之后,项目援里新增了片只有关EntityFramework的援,如下图:

MyBatis 2

   到这,环境就布局好了。

 

 二、创建Context类和模型类

  0,准备数据库。

  写代码之前,我们得事先出一个测试数据库,和一个测试表。

  这里我以
SQLServer,表结构如下:MyBatis 3

 

  EF的运有三栽模式:Model First、DataBase First 和 Code
First。这几乎种植First什么区别,没仔细研究。不过自己这边用的类是 Code
First
构建的路。这种办法,我只是认为便利,好用,感觉项目重复干净,不用添加乱七八糟的代码和布置。

  1,添加模型类。

  EF
里的模型类和普通的好像一样,无非是啊接近或性质添加一些性能标记对表的关联进展一些炫耀罢了。如下: 

    [Table("Users")]
    public class UserInfo
    {
        [Key]
        [StringLength(20)]
        [Column("Code")]
        public string Code { get; set; }

        [StringLength(20)]
        public string Name { get; set; }
    }

 

   上面代码中,定义了以下几独第一信息:

    1,类 UserInfo 对承诺数据库里的 Users 表。

    2,Code 属性对应数据库里的 Code
字段(如果属于性名和字段名相同,可以忽略这个布局,比如 Name 属性)。

    3,并且指明两独字符型属性的尺寸不能够跨越20个字符。

    4,指示 Code 属性所对应的排是主键列。

  (注:Table、Key、StringLength、Column
这几个像样需要引用命名空间 System.ComponentModel.DataAnnotations 和 using
System.ComponentModel.DataAnnotations.Schema )

 

   2,添加 DbContext 类。

   DbContext 类是 EF
的核心,封装了有数据存取业务相关的逻辑。不管是增删改查还是工作什么哟,所有的数据库操作的业务还足以在此间搞定。。听起颇牛逼!

  听起来老牛逼,事实上更牛逼!

  虽然那个牛逼,但是之所以起超级简单。比如像下的代码,就落实了一个简易的
DbContext 类:

    public class DALContext : DbContext
    {
        public DALContext() : base("name=DALContext")
        {
        }

        public virtual DbSet<UserInfo> Users { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {

        }
    }

  寥寥几履行,完成了复杂的 DB 操作。

  上面代码简单说明一下:

    1,这个类名自己自,想吃什么吃什么,我此给 DALContext。

    2,这个近乎必需继承 DbContext 类。

    3,在构造方法里,调用父类的构造方法,指明如何连接数据库,这里可以是接连字符串,也可以是布置文件里布置的连名称(连接名称必需前缀
name= )。

    4,virtual 声明的 DbSet<T>
类型的性质里封装了同百般堆数据操作的事情逻辑,我们仅需要操作该属性就实施了。

    5,有几乎独说明,就声称几独 DbSet<T> 类型的习性就推行了。T
是前代码中宣称的 Model ,属性名好随便起。

    6,OnModelCreating 方法来啊用?具体的自我耶不亮。

  (这个类似设引用命名空间 System.Data.Entity)

  3,配置连接字符串

  打开配置文件,添加一个号称也 DALContext 的连续字符串配置。如下图:  

MyBatis 4

  (打开配置文件我们会发现,里面大多了片有关 entityFramework
的飞之东西。至于是休是必要之,删了见面无会见死人,我吧无晓)

  至此,数据库表的照耀就Ok了。

 
其三、编写测试代码

  废话不说,上代码:

        static void Main(string[] args)
        {
            using (DALContext db = new DALContext())
            {
                try
                {
                    db.Users.Add(new UserInfo() {
                        Code = DateTime.Now.Ticks.ToString(),
                        Name = "张三"
                    });

                    IEnumerable<UserInfo> users = db.Users.Where<UserInfo>(u => u.Name == "张三");

                    foreach(var u in users)
                    {
                        Console.WriteLine(string.Format("{0} - {1}",u.Code,u.Name));
                    }

                    db.SaveChanges();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }

 

  以 Main 方法里,我们声明了一个 DALContext 对象
db,为了方便对象资源的放飞,这里以 using  将该担保起来。

  这段代码实现了以下职能:

    1,访问 db 对象 的 Users 属性,使用 Add
方法像操作一个集合一样为数据库表里增加一久记下。

    2,访问 db 对象 的 Users 属性,使用 Where
方法根据条件查询同一批数量对象,保存于变量 users 里,并循环输出到控制台。

    3,使用 db 对象的 SaveChanges 方法,将对准数据库的反交。

  运行之后,结果如下:

MyBatis 5

  上面例子实现了添与询问功能,删除和修改功能相近于操作集合,只要保证最后调用
SaveChanges 方法将修改提交就执行。

 

网站地图xml地图