本文以 EF6+控制台程序示范

0x00.示例项目结构

![项目结构](/uploads/Entity Framework 之 CodeFirst 模式/EFCodeFirst 项目结构.png)

0x01.新建控制台项目

0x02.添加 EF6

打开“程序包管理器控制台”,位置 工具–NuGet 程序包管理器–程序包管理器控制台
输入 install-package entityFramework , 如图

![程序包管理器控制台](/uploads/Entity Framework 之 CodeFirst 模式/EFCodeFirst 程序包管理器控制台.png)

0x03.配置连接字符串

把链接字符串放到 app.config 中,配置 DbContext 会用到。

1
2
3
<connectionStrings>
<add name="NoneContext" providerName="System.Data.SqlClient" connectionString="Data Source=(local); Initial Catalog=CODEFIRST; uid = sa; pwd = root;" />
</connectionStrings>

0x04.创建 Model 实体

创建 TestModel(名称随意)

1
2
3
4
5
6
7
8
9
namespace CodeFirstDemo
{
public class TestModel
{
public int ID { get; set; }
public string Name { get; set; }

}
}

0x05.创建上下文对象

新建 NONEContext(名称随意),继承自 DbContext,添加 DbSet 如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
namespace CodeFirstDemo
{
using System.Data.Entity;
public class NoneContext : DbContext
{
public NoneContext() : base("name=NoneContext")
{

}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//add 2018年3月23日15:08:42
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //移除复数形式·确保和model类名一致
base.OnModelCreating(modelBuilder);
}

public DbSet<TestModel> TestModel { get; set; }
}
}

0x06.在 Main 函数中运行

创建数据库。

1
2
3
4
5
6
7
8
9
10
static void Main(string[] args)
{
TestModel model = new TestModel() { ID = 1, Name = "ceshi" };
using (var db = new NoneContext())
{
db.TestModel.Add(model);
int i = db.SaveChanges();
Console.WriteLine("" + i); //目的是 看是否添加成功
}
}

0x07.总结

配置链接字符串很重要,之前配置好多 都不行

1
2
3
4
<!--<add name="NONEConnection" providerName="System.Data.EntityClient" connectionString="Data Source=localhost; Initial Catalog=CODEFIRST; user id=sa; password=root;"  />-->
<!--<add name="NONEConnection" providerName="System.Data.SqlClient" connectionString="Server=.; Database=CODEFIRST; user id=sa; password=root;" />-->
<!--<add name="NONEConnection" providerName="System.Data.SqlClient" connectionString="Server=.\SQLEXPRESS;Database=CODEFIRST;Trusted_Connection=true" />-->
<!--<add name="NONEConnection" providerName="System.Data.SqlClient" connectionString="Server=.\MSSQLSERVER;Database=CODEFIRST;user id=sa; password=root;" />-->

以后只需要添加 Model,在 NoneContext 中添加 Dbset 即可

2018 年 3 月 23 日 14:50:23 更新

01.使用数据库迁移

001.打开 NuGet Package Manager – Package Manager Console 并把项目更改到数据上下文所在的项目

1
2
3
enable-migrations #会生成一个Migrations 并多出一个 Configuration.cs
add-migration AddTestModel #会在Migrations目录下 创建一个 时间戳_AddTestModel.cs 文件
update-database #更新到数据库

002.时间戳_AddTestModel.cs 文件,无需修改,主要包含了 Up 和 Down 方法 增加或者修改 model 类,或者修改 model 类的属性,需要执行 add-migration 和 update-database 方法

003.Configuration.cs 文件的 Seed 方法 用于初始化数据

004.设置自动迁移

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
···· class Configutation : ····
{
public Configuration()
{
AutomaticMigrationsEnabled = true; #启用自动迁移
}

}

··· class MvcApplication : ····
{
protected void Application_Start()
{
···

//自动迁移
Database.SetInitializer<DbContent>(new MigrateDatabaseToLatestVersion<DbContent, AutoMigrate.Migrations.Configuration>());
var dbMigrator = new DbMigrator(new AutoMigrate.Migrations.Configuration());
dbMigrator.Update();
}
}

005.版本回溯

1
Update-Database –TargetMigration: AddUser