asp.net core 连接数据库

两种方式:

界面简介

 

1、固定式

引用类库

 

Domain 项目下有个 ApplicationDbContext.cs文件

复制代码
  public class ApplicationDbContext:DbContext
  {
     
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            var builder = new ConfigurationBuilder()
           .SetBasePath(Directory.GetCurrentDirectory())
           .AddJsonFile("appsettings.json");
            var configuration = builder.Build();
            var conn = configuration.GetConnectionString("JConnection");
            optionsBuilder.UseSqlServer(conn);
        }

        public DbSet<TB_User> tB_Users { get; set; }
       protected override void OnModelCreating(ModelBuilder modelBuilder)
      {
            base.OnModelCreating(modelBuilder);
        }
  }
复制代码

 

WebLearn2下载的appSettings.json

 

应用:

 HomeController中的Index 方法

复制代码
     public IActionResult Index()
        {
       
            using (ApplicationDbContext applicationDbContext = new ApplicationDbContext())
            { 
                var ieumberable = applicationDbContext.Set<TB_User>().Find(1);
                ViewBag.Name = ieumberable.Name;
            }
              
            return View();
        }
复制代码

 

页面效果:

 

 

2、注入式

1)第一种方式

ApplicationDbContext.cs 文件代码

复制代码
    public class ApplicationDbContext:DbContext
    {
 

        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
        {
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            var builder = new ConfigurationBuilder()
           .SetBasePath(Directory.GetCurrentDirectory())
           .AddJsonFile("appsettings.json");
            var configuration = builder.Build();
            var conn = configuration.GetConnectionString("JConnection");
            optionsBuilder.UseSqlServer(conn);
        }

        public DbSet<TB_User> tB_Users { get; set; }
          

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }
    }
复制代码

startup.cs文件

复制代码
 public void ConfigureServices(IServiceCollection services)
 {

            services.AddEntityFrameworkSqlServer().AddDbContext<ApplicationDbContext>(options =>
            {
                options.UseSqlServer(Configuration.GetConnectionString("JConnection"));
            });

            services.AddScoped<DbContext, ApplicationDbContext>();
 }
复制代码

 

homeController.cs 写法

复制代码
       private readonly DbContext _dbContext;

        public HomeController(ILogger<HomeController> logger,Pic_UserIDAL pic_UserIDAL, DbContext dbContext)
        {
            _logger = logger;
            _pic_UserIDAL = pic_UserIDAL;
            _dbContext = dbContext;
        }

        public IActionResult Index()
        { 
            var pic = this._dbContext.Set<Tb_User>().Find(1);

            return View();
        }
复制代码

 2)第二种方式

Startup.cs

复制代码
       public void ConfigureServices(IServiceCollection services)
        { 
            //services.AddScoped<DbContext, ApplicationDbContext>();
            services.AddDbContext<ApplicationDbContext>(options=>options.UseSqlServer(Configuration.GetConnectionString("JConnection")));
            
            //services.AddEntityFrameworkSqlServer().AddDbContext<ApplicationDbContext>(options =>
            //{
            //    options.UseSqlServer(Configuration.GetConnectionString("JConnection"));
            //});
             
            //services.AddDbContext<ApplicationDbContext>(options=>
            //    options.UseSqlServer(Configuration.GetConnectionString("ConnectionStrings:BaseDb"))
            //);


            services.AddScoped<Pic_UserIDAL, Pic_UserDAL>();
            //services.AddScoped<Pic_UserIDAL, Pic_UserDAL>();

            services.AddControllersWithViews();
        }
复制代码

 

ApplicationDbContext.cs文件

复制代码
    public class ApplicationDbContext:DbContext
    {
  
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
        {
        }

        //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        //{
        //    var builder = new ConfigurationBuilder()
        //   .SetBasePath(Directory.GetCurrentDirectory())
        //   .AddJsonFile("appsettings.json");
        //    var configuration = builder.Build();
        //    var conn = configuration.GetConnectionString("JConnection");
        //    optionsBuilder.UseSqlServer(conn);
        //}

        public DbSet<TB_User> tB_Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }
    }
复制代码

 

HomeController.cs文件

复制代码
     private readonly ApplicationDbContext _dbContext;

        public HomeController(ILogger<HomeController> logger,Pic_UserIDAL pic_UserIDAL, ApplicationDbContext dbContext)
        {
            _logger = logger;
            _pic_UserIDAL = pic_UserIDAL;
            _dbContext = dbContext;
        }

        public IActionResult Index()
        { 
            var pic = this._dbContext.Set<Pic_User>().Find(1);

            return View();
        }
复制代码

 

posted @   幽冥狂_七  阅读(615)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示