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