2.EF Core添加数据库配置的几种方式

Deadly 提交于 2020-02-07 20:04:25

一、OnConfiguring:重写OnConfiguring方法添加配置信息

    public class BloggingContext: DbContext
    {
        /// <summary>
        /// 配置数据连接信息
        /// </summary>
        /// <param name="optionsBuilder"></param>
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseMySql("数据库连接字符串");
            base.OnConfiguring(optionsBuilder);
        }

    }

二、构造函数参数方式配置

  a.生成DbContextOptions

  b.传入构造函数参数

var optionsBuilder = new DbContextOptionsBuilder<BloggingContext>();
optionsBuilder.UseMySql("数据库连接字符串");
using (BloggingContext db=new BloggingContext(optionsBuilder.Options)) {
  return db.Blogs;
}

 

三、容器添加方式

1、添加操作数据库上下文的构造函数

    public  class BloggingContext : DbContext
    {
        /// <summary>
        /// 容器初始化时传入options
        /// </summary>
        /// <param name="options"></param>
        public BloggingContext(DbContextOptions<BloggingContext> options): base(options)
        {
        }

        public virtual DbSet<Blog> Blogs { get; set; }
        public virtual DbSet<Post> Posts { get; set; }
    }

2、在Startup.ConfigureServices方法中添加服务依赖,这里有两种添加方式

         services.AddDbContextPool<BloggingContext>(options => options.UseMySql("数据库连接字符串")); //会集成.net core 日志机制,微软推荐使用连接池的方式
      
services.AddDbContext<BloggingContext>(options=>options.UseMySql("数据库连接字符串"));

3、 获取方式

  a.服务方式获取

            using (var context = HttpContext.RequestServices.GetService<BloggingContext>())
            {
                // do stuff
            }

  b.控制器方式传入,参数加上[FromServices]

        public IActionResult Index([FromServices]BloggingContext context)
        {return Content(“”);
        }

  c.构造函数传入

    public class HomeController : Controller
    {
        private readonly BloggingContext _context;

        public HomeController(BloggingContext context)
        {
            _context = context;
        }
     }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!