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的选择
codefrist 用于那些数据库变动大的