3、使用DB first创建上下文并生成数据库表

一、使用Code First创建数据库

1、创建模型:在Model文件夹下创建UserInfo类和ImageSwiper类

    public class UserInfo
    {
        [Key]
        public string openid { get; set; }
        public string session_key { get; set; }
        public string nickName { get; set; }
        public string avatarUrl { get; set; }
        public int gender { get; set; }
        public string province { get; set; }
        public string city { get; set; }
        public string country { get; set; }

    }
    public class ImageSwiper
    {
        [Key]
        public int id { get; set; }

        [MaxLength(500)]
        public string src { get; set; }
    }

2、添加上下文

     在Repository文件夹中添加DemoContext类,继承DbContext,添加using System.Data.Entity的引用

     将实体类添加到Dbset

    public class DemoContext : DbContext
    {
        /// <summary>
        /// 使用“codefirst”连接字符串。根据实际情况修改连接字符串,更多写在Web.config的连接字符串中
        /// </summary>
        public DemoContext()
                : base("data source=127.0.0.1;initial catalog=Demo;user id=sa;password=1234")
        {
        }

        /// <summary>
        /// code first默认生成的表名会加上s,这段代码生成的数据表名不带s
        /// </summary>
        /// <param name="modelBuilder"></param>
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        }

        /// <summary>
        /// 实体类型添加到 DbSet
        /// </summary>
        public virtual DbSet<UserInfo> UserInfo { get; set; }
        public virtual DbSet<ImageSwiper> ImageSwiper { get; set; }
    }

 如果使用连接字符串写在Web.config中,注意name一致

        public DemoContext()
                : base("name=conStr")
        {
        }


<!-- Webconfig中的<configuration>节点下增加二级节点<connectionStrings>: -->


<connectionStrings> <add name="conStr" connectionString="data source=127.0.0.1;initial catalog=Demo;user id=sa;password=1234" providerName="System.Data.SqlClient"/> </connectionStrings>

3、在Home控制器中,实例化上下文,运行,自动生成Demo数据库,并生成UserInfo表和ImageSwiper表,

    public class HomeController : Controller
    {
        DemoContext db = new DemoContext();  //实例化上下文

        public ActionResult Index()
        {
            db.UserInfo.ToList(); //
            db.ImageSwiper.ToList(); //  
return View();
}
}

4、生成数据库、查看数据库

二、更新数据库,数据库迁移。

      1、工具-》NuGet包管理器=》程序包管理控制台

2、控制台中执行下列命令:

    1)、Enable-Migrations -Force

             生成一个文件夹Migrations文件夹,里面存放数据库迁移产生的文件

    2)、Add-Migration Initial

             添加数据模型到数据库,只有写进数据库上下文中的表才会执行创建操作,这一步只是创建了执行的语句,并没有执行。

    3)、Update-Database

             执行最新数据库迁移文件,即上条语句生成的执行语句。

3、数据迁移注意事项

     1)、只有首次执行数据迁移需要执行Enable-Migrations命令,之后再执行就不需要了。

     2)、如果出现函数声明中缺少函数体、或“无法将xxx项识别为 cmdlet、函数、脚本文件或可运行程序的名称。”,等警告,注意查看是否是Windows PowerShell版本过低。参阅:如何升级PowerShell,网址:https://blog.csdn.net/u011159607/article/details/90258395

原文地址:https://www.cnblogs.com/shiliumu/p/14727457.html