九、.net core用orm繼承DbContext(數據庫上下文)方式操作數據庫


一、創建一個DataContext普通類繼承DbContext

 安裝程序集:Pomelo.EntityFrameworkCore.MySql  

二、配置連接字符串(MySql/SqlServer都可以)

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace DotNetCore.Models
{
    public class DataContext:DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //配置MySql連接字符串/SqlServer連接字符串皆可
            optionsBuilder.UseMySql("Server=47.94.174.85;Database=testDb; User=testDb;Password=testDb;");
        }
        public class t_testModel
        {
            public int id { get; set; }
            public string name { get; set; }
            public string pass { get; set; }
        }
        //添加表實體
        public DbSet<t_testModel> friends { get; set; }
    }
}  

這里注意:

optionsBuilder.UseMySql("Server=47.94.174.85;Database=testDb; User=testDb;Password=testDb;");//的你要安裝Pomelo.EntityFrameworkCore.MySql 
optionsBuilder.UseMySQL("Server=47.94.174.85;Database=testDb; User=testDb;Password=testDb;");//的你要安裝MySql.Data.EntityFrameworkCore   這個UserMYSQL中MYSQL是大寫的

三、在控制器里面寫查詢操作

 

            DataContext context = new DataContext();
         
            List<t_testModel> list = context.friends.ToList();
            return Content(list.ToString());

 

四、數據庫表對應的結構

DROP TABLE IF EXISTS `friends`;
CREATE TABLE `friends` (
  `id` int(3) NOT NULL,
  `name` varchar(8) NOT NULL,
  `pass` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
INSERT INTO `friends` VALUES ('4', '王六', 'dasd');

 

總結所作的操作

1、創建DataContext類繼承DbContext(一個類文件)  

2、控制器里面寫查詢操作 

 

四、數據連接屬性應該存放在appsettings.json內

1、更改DbContext類內容如下所示

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace DotNetCore.Models
{
    public class DataContext : DbContext
    {
        public DataContext(DbContextOptions options)
                  : base(options)
        {
        }

        public class t_testModel
        {
            public int id { get; set; }
            public string name { get; set; }
            public string pass { get; set; }
        }
        //添加表實體
        public DbSet<t_testModel> friends { get; set; }
    }
}

2、appsettings.json文件更改如下

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "ConnectionStrings": {
    "DefaultConnection": "Server=47.94.174.85;Database=testDb; User=testDb;Password=testDb;"
  }
}

  

3、將Startup類里面的ConfigureServices替換成下列代碼  

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<DataContext>(options =>
                           options.UseMySql(Configuration.GetConnectionString("DefaultConnection")));
            services.AddMvc();
        }

 注意:鼠標放上去繼續點擊引用

4、控制器實現代碼

            DataContext context = new DataContext();

            List<t_testModel> list = context.friends.ToList();
            return Content(list.ToString());

  

我們點擊運行吧 我們發現還是不可用。

我們換一種方式運行

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using DotNetCore.Models;
using static DotNetCore.Models.DataContext;

namespace DotNetCore.Controllers
{
    public class HomeController : Controller
    {

        public readonly DataContext _context;
        //構造函數,依賴注入數據庫上下文就可以了
        public HomeController(DataContext context)
        {
            _context = context;
        }

        public IActionResult Index()
        {         
            List<t_testModel> list = _context.friends.ToList();
            return Content(list.ToString());
            return View();
        }

        public IActionResult About()
        {
            ViewData["Message"] = "Your application description page.";

            return View();
        }

        public IActionResult Contact()
        {
            ViewData["Message"] = "Your contact page.";

            return View();
        }

        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
}

  

 

asp.netCore連接多個數據庫參考:


免責聲明!

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



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