EntityFramework

CodeFirst

可以建立新数据库,或者向空数据库添加表。

1.建立新数据库

1)引用EntityFramework

可以通过nuget获取到最新的,安装完毕后项目将自动引用

2)生成数据库,数据库表

//Dbcontext 要 引用命名空间 using System.Data.Entity;

public class BlogContext : DbContext

{

public DbSet<Blog> Blogs { get; set; }
       public DbSet<Post> Posts { get; set; }
       public DbSet<User> Users { get; set; }

       protected override void OnModelCreating(DbModelBuilder modelBuilder)
       {
           modelBuilder.Entity<User>()
               .Property(u => u.Displayname)
               .HasColumnName("display_name");
       }

}

数据库名字为BlogContext(实体上下文),3个表 Blogs,Posts,Users

下面是3张表的类代码

1)virtual延迟加载

2)注意[key] 引用using System.ComponentModel.DataAnnotations,表明实体的键

public class Blog
    {
        public int BlogId { get; set; }
        public string Name { get; set; }
        /// <summary>
        /// 添加新列,更改模型
        /// </summary>
        public string Url { get; set; }
        public virtual List<Post> Posts { get; set; }
    }

    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Context { get; set; }

        public int BlogId { get; set; }
        public virtual Blog blg { get; set; }
    }

    public class User
    {
        [Key]   
        public string Username { get; set; }
        public string Displayname { get; set; }

    }

3)生成数据库和表后,如果模型有更改后,通过 Code First 迁移 更新到数据库

比如表中新建列,新建了表。

“Code First 迁移”(或简称“迁移”)的功能,处理模型更改  ---->启用 Code First 迁移

Enable-Migrations

Add-Migration 命令检查自上次迁移后是否有更改,并使用所有更改搭建新迁移。我们可以为迁移指定名称;在本例中,将此迁移称为“AddUrl”。

  • 使用 Add-Migration AddUser 命令搭建一个迁移,将这些更改应用于数据库
  • 运行 Update-Database 命令,将新迁移应用于数据库

vs菜单->工具->nuget包管理->程序包管理器

Database first

使用实体框架进行 Database First 开发。通过 Database First,可以从现有数据库对模型进行反向工程处理。模型存储在一个 EDMX 文件(扩展名为 .edmx)中,可在实体框架设计器中查看和编辑。应用程序中用于交互的类是自动从 EDMX 文件生成的.

在edm框架设计器中,可以通过右击空白,选择 ”从数据库更新模型“或者“通过模型生成数据库”

假设数据库中增加了1张表,则通过”从数据库更新模型“可以更新到模型中。

ModelFirst

本演练介绍了 Model First 开发,通过这种开发,可在 EF 设计器中创建模型,然后根据模型生成数据库。随后,我们使用模型从数据库读写一些数据。最后,我们更新了模型,重新创建了数据库架构来匹配模型。

也是通过edm和程序交互,一旦根据模型从数据库更新则数据库的所有表将被删除,然后重新建,对于已经部署好的服务器要使用,本地机器可以使用。

workfolw的选择

image

codefrist 用于那些数据库变动大的

原文地址:https://www.cnblogs.com/StudyLife/p/3588645.html