Main
Main
文章目录
  1. 0x00.示例项目结构
  2. 0x01.新建控制台项目
  3. 0x02.添加EF6
  4. 0x03.配置连接字符串
  5. 0x04.创建Model实体
  6. 0x05.创建上下文对象
  7. 0x06.在Main函数中运行
  8. 0x07.总结
  9. 2018年3月23日14:50:23 更新
    1. 01.使用数据库迁移

Entity Framework之CodeFirst模式

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

0x00.示例项目结构

项目结构

0x01.新建控制台项目

0x02.添加EF6

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

程序包管理器控制台

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

支持一下
  • 微信扫一扫
  • 支付宝扫一扫