EF之CodeFirst

1.Entity Framework简述

ORM(对象关系映射)是一种思想,即在实体类和数据库表建立映射关系,而Entity Framework就是ORM框架的一种,简称为EF.

2.Code First(代码优先)

在EF中有很多模式,比如Code First,DBFirst,ModelFist等。本文中主要介绍Code First(代码优先)

顾名思义,在开发中先从代码出发,因为常规的开发思想是从数据库出发,要在数据库建表等等之类的;当然也有Code First From DB 模式,即原有数据库的基础上进行Code First

#起步

为了方便测试,建立一个控制台应用程序。使用Nuget包添加EF的引用,添加一个employee类,以及一个DbContext类

employee.cs


public
class employee { public int Id { get; set; } public string EmployeeName { get; set; } }

MyDbContext.cs

public class MyDbContext:DbContext
    {
        public DbSet<employee> employees{get;set;}
    }

#数据迁移

1.enable-migrations 不区分大小写,该指令将启动CodeFirst 迁移

2.add-migration CreateTable  添加一个迁移,CreateTable是备注信息,可以随意写。添加之后会增加一条迁移记录,我们可以看到增加的表以及字段

 3.update-database    把本次迁移提交到数据库,会在SqlServer数据库创建数据库和表以及一个迁移记录表。数据库的前缀是项目名,数据库名是我们建的DbConetext类

 

 

#数据注释

修改employ类,并加上一些特性。以下是常用的一些注释,Table可以指明映射到数据库的表名(默认是复数,即employees),Column可以指明映射到数据库的列名,key表示为主键,required映射到数据库值不能为空,

NotMapped不用映射到数据库.....

 [Table("employee")]
    public class employee
    {
        [Key]
        public int Id { get; set; }

        [Required,MaxLength(10,ErrorMessage ="长度超出范围")]
        public string EmployeeName { get; set; }

        public DateTime Birthday { get; set; }

        [Column("status")]
        public string state { get; set; }

        [NotMapped]
        public string Test { get; set; }

        public int Age { get; set; }
    }

 *更新表记得迁移提交哟

#Demo

  static void Main(string[] args)
        {
            using (var db = new MyDbContext())
            {
                employee xh = new employee()
                {
                    EmployeeName = "萧何",
                    Birthday = Convert.ToDateTime("2001-01-01"),
                    state = "enable"
                };
              
                db.employees.Add(xh);
                db.SaveChanges();
                var query = from s in db.employees
                            orderby s.EmployeeName
                            select s;
                foreach (var item in query)
                {
                    Console.WriteLine("*****"+item.EmployeeName+"*****");
                }
                Console.ReadKey();

            }
        }
原文地址:https://www.cnblogs.com/berlinman/p/10547083.html