1.新建一个空解决方案,添加一个C#类库:Entity
2.右击Entity项目管理NuGet程序包,安装:EntityFramework6.1.3、MySql.Data.Entity6.9.9
3.在Entity项目中添加一个空的CodeFirst ADO.NET实体对象模型 命名:MyContext(自己随便取)
在app.config文件中会默认sqlserver添加连接字符串配置.
<connectionStrings>
<add name="MyContext" connectionString="data source= (LocalDb)\v11.0;initial catalog=Entity.DBContext;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
我们需要把它替换成MySql的连接字符串配置,填写直接数据库名,登陆账号密码
<connectionStrings>
<add name="MyContext" connectionString="Data Source=127.0.0.1;port=3306;Initial Catalog=TestDB;user id=root;password=root;" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
4.我们打开程序包管理控制台,选择ADO.NET实体对象模型所在的项目:Entity
在控制台中输入Enable-Migrations 回车
执行完成后,会生成Migrations 文件夹 和 Configuration.cs类,
现在需要把 Configuration.cs 的构造函数中设置sql生成类型为MySql
public Configuration()
{
AutomaticMigrationsEnabled = false;
SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
}
然后在DBContext.cs类添加特性,标记DBContext使用MySql的配置
[DbConfigurationType(typeof(MySqlEFConfiguration))]
public class DBContext : DbContext
{
public DBContext()
: base("name=DBContext")
{
}
}
5.现在我们就可以见一个模型类来生成数据库了
新建一个User类,string 需要设置长度
public class User
{
public int Id { get; set; }
[MaxLength(10)]
public string Name { get; set; }
[MaxLength(16)]
public string Account { get; set; }
[MaxLength(16)]
public string PassWord { get; set; }
}
然后再DBContext.cs中添加User模型集合
[DbConfigurationType(typeof(MySqlEFConfiguration))]
public class DBContext : DbContext
{
public DBContext()
: base("name=DBContext")
{
}
public virtual DbSet<User> Users { get; set; }
}
准备好了之后,.我们打开程序包管理控制台,选择ADO.NET实体对象模型所在的项目:Entity
输入 :Add-Migration AddUserEntity (注意中间空格,AddUserEntity这个是名字,自己可以随便取)
会生成一个201704050709000_AddUserEntity.cs Migration类
如果没有报错,应该就成功了,
在输入 Update-Database 成功后
打开数据库看看Tabel 有没有生成。
Migration 相关命令 :
Add-Migration AddUserEntity –Force 强制替换之前生成的AddUserEntity Migration文件
Update-Database 更新当前模型
Update-Database -TargetMigration 201704050709000_AddUserEntity(之前生成的Migration文件名) 回滚至之前的某个点的模型