\

In the cone of light, all is fate

【.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

以后再写...

posted @ 2022-08-28 19:58  Ymrt  阅读(666)  评论(0编辑  收藏  举报