zoukankan      html  css  js  c++  java
  • 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;
            }
         }
  • 相关阅读:
    iOS 网易新闻用到的框架
    iOS homekit使用说明
    iOS 如何在整个屏幕中都能实现滑动返回的效果
    iOS 如何设置导航的滑动返回手势, 和系统饿一样
    iOS 7 tabbar 透明的问题
    iOS 使用xib后获取view的frame出错的问题
    Masonry 当需要把某个控件进行隐藏的时候有警告的解决方案
    java 中多线程之间的通讯之生产者和消费者 (多个线程之间的通讯)
    java 中多线程之间的通讯之等待唤醒机制
    linux时间同步chrony介绍
  • 原文地址:https://www.cnblogs.com/Adoni/p/12270153.html
Copyright © 2011-2022 走看看