2.EF Core添加數據庫配置的幾種方式


一、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;
        }
     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM