.net core使用数据库
.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使用数据库的更多相关文章
- Net Core中数据库事务隔离详解——以Dapper和Mysql为例
Net Core中数据库事务隔离详解--以Dapper和Mysql为例 事务隔离级别 准备工作 Read uncommitted 读未提交 Read committed 读取提交内容 Repeatab ...
- 使用Entity Framework Core访问数据库(DB2篇)
前言 上一篇讲了一些EF Core访问Oracle的坑.(感兴趣请移步:使用Entity Framework Core访问数据库(Oracle篇)) 这篇主要讲一下关于EF Core访问DB2的一揽子 ...
- 使用Entity Framework Core访问数据库(Oracle篇)
前言 哇..看看时间 真的很久很久没写博客了 将近一年了. 最近一直在忙各种家中事务和公司的新框架 终于抽出时间来更新一波了. 本篇主要讲一下关于Entity Framework Core访问ora ...
- .NET Core 获取数据库上下文实例的方法和配置连接字符串
目录 .NET Core 获取数据库上下文实例的方法和配置连接字符串 ASP.NET Core 注入 .NET Core 注入 无签名上下文 OnConfigure 配置 有签名上下文构造函数和自己n ...
- 谈谈EF Core实现数据库迁移
作为程序员,在日常开发中,记忆犹新的莫过于写代码,升级程序.升级程序包含两部分:一是,对服务程序更新:二是,对数据库结构更新.本篇博文主要介绍数据库结构更新,在对数据库升级时,不知道园友们是否有如下经 ...
- 在.NET Core类库中使用EF Core迁移数据库到SQL Server
前言 如果大家刚使用EntityFramework Core作为ORM框架的话,想必都会遇到数据库迁移的一些问题. 起初我是在ASP.NET Core的Web项目中进行的,但后来发现放在此处并不是很合 ...
- AspNet Core :创建自定义 EF Core 链接数据库
这两天比较忙,写的会慢一点. 我们以控制台演示 EF Core的链接数据库 首先创建控制台程序 创建数据上下文类 EntityTable /// <summary> /// 继承 DbCo ...
- Entity Framework Core 之数据库迁移
前言 最近打算用.NET Core写一份开源的简易CMS系统,来练练手 所以又去深入研究了一下Entity Framework Core 发现其实有些细节园子里还是很少讲到. 特意整理了几个细节. 正 ...
- ASP.NET CORE系列【六】Entity Framework Core 之数据库迁移
前言 最近打算用.NET Core写一份简单的后台系统,来练练手 然后又用到了Entity Framework Core 发现园子里有些文章讲得不是那么细节,对于新手小白来说,可能会有点懵. 特意整理 ...
随机推荐
- HTTP.sys远程执行代码漏洞
远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞. http://bbs.safedog.cn/thre ...
- Flink--Table和DataStream和DataSet的集成
将DataStream或DataSet转换为表格 在上面的例子讲解中,直接使用的是:registerTableSource注册表 对于flink来说,还有更灵活的方式:比如直接注册DataStream ...
- Shell文本处理四剑客
5.1 [grep] 全面搜索正则表达式(GREP)是一种强大的文本搜索工具,能使用正则 表达式搜索文本,并把匹配的行打印出来 过滤来自一个文件或标准输入匹配模式内容 除了grep外,还有egrep, ...
- python3改版后的特征
1.原始数据类型和运算符 # 整数 3 # => 3 # 算术没有什么出乎意料的 1 + 1 # => 2 8 - 1 # => 7 10 * 2 # => 20 # 但是除法 ...
- 完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五
const toChineseNum = (num) => { const unit = ['', '十', '百', '千'] const counts = ['零', '一', '二', ' ...
- Trident中的解析包含的函数操作与投影操作
一:函数操作 1.介绍 Tuple本身是不可变的 Function只是在原有的基础上追加新的tuple 2.说明 如果原来的字段是log,flag 新增之后的tuple可以访问这些字段,log,fla ...
- webpack的build的时候时间长处理方案
观察第一次build的时间比较长,之后的编译时间较短,可以通过webpack -watch 监测性能 1, 将webpack升级到4.0,build 的速度提升很多 2,用webpack -watch ...
- poj 1966(求点连通度,边连通度的一类方法)
题目链接:http://poj.org/problem?id=1966 思路:从网上找了一下大牛对于这类问题的总结:图的连通度问题是指:在图中删去部分元素(点或边),使得图中指定的两个点s和t不连通 ...
- 001.NoSQL及MongoDB简介
一 NoSQL简介 二 分布式系统 三 CAP及BASE定律 以上均可参考: http://www.runoob.com/mongodb/nosql.html 四 MongoDB简介 参考:http: ...
- Linux学习笔记 11
移除文件 #rm -i file 有信息确认的文件删除 #rm file1 file2 有信息确认的文件删除 #rm -rf file 强制删除file文件