• 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();
    
                }
            }
  • 相关阅读:
    navicat12破解版
    mysql-5.6.40-winx64的安装,只需解压,个人感觉最容易的方法windows系统
    JavaIO流学习总结-FileReader和FileWriter基本操作练习
    JavaIO流学习总结-CharArrayReader和CharArrayWriter基本操作练习
    JavaIO流学习总结-PipedReader和PipedWriter基本操作练习
    JavaIO流学习总结-BufferedWriter和BufferedReader基本操作练习
    JavaIO流学习总结-StringReader和StringWriter基本操作练习
    JavaIO流学习总结-InputStreamReader和OutputStreamWriter基本操作练习
    JavaIO流学习总结-FilterReader和FilterWriter分析
    JavaIO流学习总结-字节流总结
  • 原文地址:https://www.cnblogs.com/berlinman/p/10547083.html
Copyright © 2020-2023  润新知