.net core使用数据库

.net core 通过可以通过ef core或其它ORM框架进行数据访问。此处使用EF和Dapper作为示例。

使用EF Core访问数据库

与 .NET Framework访问数据库一直,我们可以使用Code-First进行开发,也可以使用DB-First进行开发。我们不关心是现有数据库还是现有代码,我们关心如何进行访问。

首先创建数据模型Model:

[Table("tbl_user")]
public class UserEntity
{
[Column("id")]
public int Id { get; set; }
[Column("code")]
public string Code { get; set; }
[Column("name")]
public string Name { get; set; }
[Column("status")]
public UserStatus Status { get; set; }
} public enum UserStatus
{
Enable = 1,
Disable = 2,
}

然后创建我们的DBContext:

public class DemoDBContext : DbContext
{
public DbSet<UserEntity> Users { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseNpgsql("server=127.0.0.1;userid=postgres;password=123;database=demo;Pooling=false;Enlist=true");
base.OnConfiguring(optionsBuilder);
} }

使用postgresql数据库。

在程序中,我们使用new关键字创建DbContext对象:

var dbContext = new DemoDBContext();
var user = new UserEntity()
{
Code = "01",
Name = "Tom",
Status = UserStatus.Enable
}; dbContext.Add(user);
dbContext.SaveChanges();
Console.WriteLine("User = " + JsonConvert.SerializeObject(user, Formatting.Indented));

此处演示了正常插入数据库的操作。

使用Dapper访问数据

Dapper是一个轻量级的ORM框架,性能也很好,唯一的缺点是需要写大量的SQL脚本。我们来看一下如何使用Dapper进行数据访问的。

/// <summary>
/// 使用Dapper访问数据库
/// </summary>
public static void UseDapperAccessDatabase()
{
using (IDbConnection db = OpenConnection("server=127.0.0.1;userid=postgres;password=123;database=demo;Pooling=false;Enlist=true"))
{
var jerry = new UserEntity()
{
Code = "02",
Name = "Jerry",
Status = UserStatus.Enable,
};
jerry.Id = (int)db.Insert(jerry); var user = db.Get<UserEntity>(1);
Console.WriteLine($"User = {JsonConvert.SerializeObject(user)}"); user = db.QuerySingleOrDefault("select * from tbl_user where id=@id", new { id = 2 });
Console.WriteLine($"User = {JsonConvert.SerializeObject(user)}");
}
} /// <summary>
/// get the db connection
/// </summary>
/// <param name="connectionString"></param>
/// <returns></returns>
public static IDbConnection OpenConnection(string connectionString)
{
var conn = new NpgsqlConnection(connectionString);
conn.Open();
return conn;
}

Dapper不支持数据库列的映射,也就是说,如果数据库列名和Model的列名不一致时,好像没有办法进行处理。

以上代码仅供演示。

.net core使用数据库的更多相关文章

  1. Net Core中数据库事务隔离详解——以Dapper和Mysql为例

    Net Core中数据库事务隔离详解--以Dapper和Mysql为例 事务隔离级别 准备工作 Read uncommitted 读未提交 Read committed 读取提交内容 Repeatab ...

  2. 使用Entity Framework Core访问数据库(DB2篇)

    前言 上一篇讲了一些EF Core访问Oracle的坑.(感兴趣请移步:使用Entity Framework Core访问数据库(Oracle篇)) 这篇主要讲一下关于EF Core访问DB2的一揽子 ...

  3. 使用Entity Framework Core访问数据库(Oracle篇)

    前言 哇..看看时间 真的很久很久没写博客了 将近一年了. 最近一直在忙各种家中事务和公司的新框架  终于抽出时间来更新一波了. 本篇主要讲一下关于Entity Framework Core访问ora ...

  4. .NET Core 获取数据库上下文实例的方法和配置连接字符串

    目录 .NET Core 获取数据库上下文实例的方法和配置连接字符串 ASP.NET Core 注入 .NET Core 注入 无签名上下文 OnConfigure 配置 有签名上下文构造函数和自己n ...

  5. 谈谈EF Core实现数据库迁移

    作为程序员,在日常开发中,记忆犹新的莫过于写代码,升级程序.升级程序包含两部分:一是,对服务程序更新:二是,对数据库结构更新.本篇博文主要介绍数据库结构更新,在对数据库升级时,不知道园友们是否有如下经 ...

  6. 在.NET Core类库中使用EF Core迁移数据库到SQL Server

    前言 如果大家刚使用EntityFramework Core作为ORM框架的话,想必都会遇到数据库迁移的一些问题. 起初我是在ASP.NET Core的Web项目中进行的,但后来发现放在此处并不是很合 ...

  7. AspNet Core :创建自定义 EF Core 链接数据库

    这两天比较忙,写的会慢一点. 我们以控制台演示 EF Core的链接数据库 首先创建控制台程序 创建数据上下文类 EntityTable /// <summary> /// 继承 DbCo ...

  8. Entity Framework Core 之数据库迁移

    前言 最近打算用.NET Core写一份开源的简易CMS系统,来练练手 所以又去深入研究了一下Entity Framework Core 发现其实有些细节园子里还是很少讲到. 特意整理了几个细节. 正 ...

  9. ASP.NET CORE系列【六】Entity Framework Core 之数据库迁移

    前言 最近打算用.NET Core写一份简单的后台系统,来练练手 然后又用到了Entity Framework Core 发现园子里有些文章讲得不是那么细节,对于新手小白来说,可能会有点懵. 特意整理 ...

随机推荐

  1. 修改ini文件的批处理

    用VBS更简单: vbs代码: On Error Resume Next Dim Fso,TxtFl,Str Set Fso = CreateObject("Scripting.FileSy ...

  2. Codeforces 865C Gotta Go Fast 二分 + 期望dp (看题解)

    第一次看到这种骚东西, 期望还能二分的啊??? 因为存在重置的操作, 所以我们再dp的过程中有环存在. 为了消除环的影响, 我们二分dp[ 0 ][ 0 ]的值, 与通过dp得出的dp[ 0 ][ 0 ...

  3. 使用ycsb对hbase0.94.11 benchmark

    Ycsb下载地址:https://github.com/brianfrankcooper/YCSB/releases 目前测试hbase0.94.11,因此下载ycsb-0.1.4.tar.gz 1. ...

  4. 元素滚动到底部或顶部时阻止body滚动

    移动端的弹窗内容有滚动条,滚动到底部或顶部时或影响弹窗下的body滚动,某些浏览器滚动到顶部时不松手就触发了刷新页面的情况,如果不需要这样的默认体验,就需要加一下判断了. var startX,sta ...

  5. 002 如何在一台PC上装两个版本的python

    在之前学习爬虫的时候,使用的是python2.7,现在主流已经是3.7了. 在这里,写了一下如何在2.7的基础上安装python3.6 一:检查python版本 1.cmd 二:安装python3 1 ...

  6. Java 之 Web前端(三)

    1.JSP a.全称:Java Server Page b.运行:翻译.编译.类装载.类实例化.(初始化.服务.销毁 (这三点为Servlet的生命周期)) 2.JSP的基本组成 a.HTML模板 注 ...

  7. 在 Windows 中为高级用户配置 IPv6 的指南

    在 Windows 中为高级用户配置 IPv6 的指南 适用于: Windows 10, version 1809Windows Server 2019, all versionsWindows Se ...

  8. Oracle DB

    索引 一.安装   卸载 一.安装 1.Oracle首先询问用户是否接受更新信息,一般选择不接受:Oracle安装选项,需为其配置数据库,所以此处会询问是否创建安装数据库,选择是系统类型,一般选择服务 ...

  9. BZOJ.4650.[NOI2016]优秀的拆分(后缀数组 思路)

    BZOJ 洛谷 令\(st[i]\)表示以\(i\)为开头有多少个\(AA\)这样的子串,\(ed[i]\)表示以\(i\)结尾有多少个\(AA\)这样的子串.那么\(Ans=\sum_{i=1}^{ ...

  10. 直接存储器存取(Direct Memory Access,DMA)详细讲解

    一.理论理解部分. 1.直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输. 2.无须CPU干预,数据可以通过DMA快速移动,这就节省了CPU的资源来做其他操作. ...