首页 > 数据库 >C#中的EFCore数据库连接

C#中的EFCore数据库连接

时间:2022-11-02 02:11:06浏览次数:45  
标签:实体类 C# 数据库 Microsoft EntityFrameworkCore EFCore true public

EFcore框架,使用的是ORM框架(Object Relational Maqqing)对象--关系--映射,意思是一个对象(类)表示一个表。
两种模式:DB First 数据库优先;code First 代码优先。
EFcore其实是一个提供程序包(dll)文件,连接数据库用的。需要限制NuGet下载到项目中才能用。搜索entity就可以找到。
下载名称如下:
SQL server中型数据库:Microsoft.EntityFrameworkCore.SqlServer 
MySQL小型数据库:MySQL.Data.EntityFrameworkCore
Oracle大型数据库:Oracle.EntityFrameworkCore
SQLite移动端数据库: Microsoft.EntityFrameworkCore.SQLite
InMemory做性能测试的:Microsoft.EntityFrameworkCore.InMemory
API 数据接口:Microsoft.EntityFrameworkCore.Cosmos
EF框架命令工具包:Microsoft.EntityFrameworkCore.Tools 必须安装后面你才能使用一些命令,比如数据库迁移;命令控制台:工具--->NuGet程序包管理器--->程序包管理控制台。即可输入命令。

拼接数据库连接字符串:
服务器名称3种方法:1.Data Source = (localdb)\ProjectModels; 2.server=.;3.addr=.;
数据库名称两种:1、database=数据库名;2、initial catalog=数据库名;
安全信息凭证两种:1、trusted_connection=true;2、Integrated Security = false; 两种是一样的,true表示可以用Windows身份登录,false表示必须账号密码登录。
属性:MultipleActiveResultSets=true;表示提高访问数据库的效率

string connString = @"server=.;database=OA;trusted_connection=true;MultipleActiveResultSets=true;";//数据库连接字符串

1.code First:用代码来生成数据库(比较灵活)

首先创建个实体类,实体类最好建立Models文件夹专门存放。通过实体类转换成数据库。

//Models实体类:做数据传输用,一个类表示一个表。
public class userinfo
{
    public int id { get; set; }//编号
    public string name { get; set; }//姓名
    public string sex { get; set; }//性别
    public int age { get; set; }//年龄
}

数据库上下文类:操作数据库用的

数据库上下文类(管道:操作ef框架的一个类)可以看成一个数据库
必须继承DbContext是ef框架提提供给我们的,封装了对数据库的增删改查等功能,功能不够要添加一下自己的东西比如:新表等等

using ConsoleApp1.Models;//实体类文件夹自己创建的
using Microsoft.EntityFrameworkCore;//使用EFCore框架必须要引入。

Console.WriteLine("这个代码没用,只是顶级程序入口没有代码,随便输入一句话指定入口Main方法而已");

//创建一个操作OA数据库的上下文类
public class NetContext : DbContext//必须继承ef框架提供的DbContext类,我们创建的上下文类是用来添加新功能的
{
    //构造方法主要ef框架在用,有时用户也可能用到
    public NetContext()
    {         
    }
    //其实这两个构造也是父类的构造,其实参数是给父类传递的。
    public NetContext(DbContextOptions<NetContext> options):base(options)
    {
    }

    public DbSet<userinfo> userinfo { get; set; }//用一个字段表示一个表。连接model用

    //继承父类虚方法;作用是配置数据库上下文类
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        string connString = @"server=.;database=OA;trusted_connection=true;MultipleActiveResultSets=true;";//数据库连接字符串
        optionsBuilder.UseSqlServer(connString);
    }
}

创建好后就可以执行数据库迁移两个命令:1.add-migration init-Mig (生成迁移代码  init-Mig是迁移的名称) 得到一个迁移文件夹,2.update-database(执行到数据库)

2、DB First 用数据库来生成代码(了解)

 

标签:实体类,C#,数据库,Microsoft,EntityFrameworkCore,EFCore,true,public
From: https://www.cnblogs.com/longxinyv/p/16849630.html

相关文章

  • [leetcode] The Skyline Problem
      classSolution{publicList<int[]>getSkyline(int[][]buildings){List<int[]>res=newArrayList<>();List<int[]>height=newAr......
  • C++的前置声明
    C++的前置声明C++前置声明,这玩意看起是不是超级简单?我们来看几个问题:模板怎么前置声明typedef怎么前置声明模板的typedef怎么前置声明是不是还是比较头疼的......
  • Spring中注解---事务注解 @Transactional中的属性与值
    @Transactional修饰范围:类上或方法上作用:给类中方法加入事务,当类上和方法上同时存在该注解时方法优先注解属性:propagation:控制事务传播属性......
  • li标签设置inline-block后元素间产生间隙
    参考文章li与li之间设置display:inline-block;后有看不见的空白间隔如何形成的,相应的解决办法1.问题描述当使用li作为导航栏时,通常需要将li设置为一行显示,其......
  • GCC使用预编译头文件
    GCC使用预编译头文件通常大型项目有许多头文件,每个源文件中都包含很多头文件。编译器一遍又一遍地处理这些头文件所花费的时间几乎可以占据构建项目的所有时间。为了使构......
  • BUAA 计组 P5 流水线CPU
    写在前面开学以来摸了整整俩月,感觉Pre、P0-P4都没啥好写的,现在就是非常后悔,感觉自己已经不会写博客了。。。好不容易撑到P5,浅识了流水线CPU的设计,深感其体系结构之复杂。......
  • AWS S3 bucket 的 ACL 控制
    在新的AWSS3控制中,启用了一个默认的配置。这个默认的配置能够阻止用户的访问。如何修改首先需要对Object所有者进行修改。在打开的界面中,选择ACLs启用。然后选......
  • 文件IO-chmod-fchmod
    第一版代码/* LinuxAPI:chown function:C实现chmod函数功能,修改文件权限*/#include<stdio.h>#include<stdlib.h>#include<sys/stat.h>intmain(intargc,......
  • 2022年4月第十三届蓝桥杯省赛C组C语言 习题解析(每日一道)
    试题B:特殊时间   【问题描述】           2022年2月22日22:20是一个很有意义的时间,年份为2022,由3个2和1个0组   成,如果将月和日......
  • Static应用知识
    工具类:工具类都是一些静态方法,每个方法都是以完成一个公用的功能为目的因为工具类的这些方法只是为了完成一个公用功能,所以用静态来定义实例方......