雪花

九、.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连接多个数据库参考:

posted @ 2019-03-31 13:14  十色  阅读(2290)  评论(0编辑  收藏  举报