【.Net6】简单使用EF进行CodeFirst和DbFirst
CodeFirst
CodeFirst是根据代码中定义的模型,映射到数据库中,下面以一个控制台项目为例,简单描述其方法。
//首先需要2个Nuget包:
Microsoft.EntityFrameworkCore.SqlServer //如果使用的数据库是SqlServer则安装这个包
Microsoft.EntityFrameworkCore.Tools //迁移和更新数据库时需要
创建一个类,作为模型,比如Book.cs,最好新建一个文件夹用来放模型类
namespace LEF.Models
{
public class Book
{
//下面都是Book类在数据库中需要有的属性
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public DateTime CreatedDate { get; set; }
public string Publisher { get; set; }
public decimal Price { get; set; }
public string ImageUrl { get; set; }
}
}
创建一个类用于继承EFCore的DbContext类,DbContext类中有些方法需要在这里实现,但初学来看结构比较固定
namespace LEF
{
public class Context:DbContext
{
public Context()
{
}
public Context(DbContextOptions<Context> options):base(options)
{
}
public DbSet<Book> Book { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//这里是连接数据库,其中如果database指定的数据库不存在,则会创建
string connString = @"server=DESKTOP-3RKRN58;database=efcoreDb;trusted_connection=true;MultipleActiveResultSets=true";
optionsBuilder.UseSqlServer(connString);
}
}
}
如果使用的是MySql,就稍有变化
//需要安装Nuget包:
//Pomelo.EntityFrameworkCore.MySql
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
string connStringMySql = @"server=localhost;port=3306;uid=root;pwd=密码;database=efcoreDb;";
//参数除了连接字符串,还要规定版本
//optionsBuilder.UseMySql(connStringMySql, Microsoft.EntityFrameworkCore.ServerVersion.Create(new Version(8, 0, 19), ServerType.MySql));
//一般会这样写:
optionsBuilder.UseMySql(connStringMySql, ServerVersion.AutoDetect(connStringMySql));
}
最后在菜单栏找到 工具->Nuget包管里器->程序包管理器控制台,打开控制台后输入以下内容
add-migration 任意字符串 //迁移命令,此时只是生成了几个文件和代码,还未更新到数据库
update-database //上面的命令执行成功后,就可以用这个命令更新到数据库了
DbFirst
以后再写...