.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 发现园子里有些文章讲得不是那么细节,对于新手小白来说,可能会有点懵. 特意整理 ...
随机推荐
- IIS7部署报错 500.22错误 检查到这集成托管模式下不使用的ASP.NET配置
公司的一个项目,环境为: .Net 4.0 + MVC3,部署在Windows Server 2003R2 IIS6.0上面运行正常, 迁移到新服务器Windows Server 2008R2,部署在 ...
- Python_xml
xml: 可扩展标记语言,用来标记数据,定义数据类型,主要用来传输和存储数据(和json差不多,不同语言或程序之间进行数据交换的协议) ET(xml.etree.ElementTree)中的几个类: ...
- Mongodb查询提示com.MongoDB.MongoException: too much data for sort() with no index
解决办法: 查询数据量太大,添加索引即可解决问题 通过scrapy爬行完数据后,通过db.wooyun.drops.ensureIndex({"datetime":1})
- Python 面向对象5 多态
一.多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作,简单的说就是一句话:允许将 ...
- jenkins(1): jenkins安装以及从gitlab拉取代码
1. gitlab前面已经写过了,自己去参考 https://www.cnblogs.com/yitianyouyitian/p/9214940.html 2. jenkins安装 2.1 jdk 安 ...
- day10.函数,函数的参数
函数的思维导图: 老师的笔记 昨天内容概括 #组长:默写统一交给组长 #不建议看视频 #上课敲过的所有的例子 # 1.看一遍.看能不能看懂 # 2.给每一道题起一个名字或者一句描述 # 3.看着文字, ...
- Spring(三)实例化Bean以及注入对象
使用xml实例化bean 在xml中实例化bean的三种方式 <bean id="springService" class="com.zhiyou100.crm.t ...
- Oracle中start with...connect by子句的用法
http://www.blogjava.net/xzclog/archive/2010/03/05/314642.html
- git branch & checkout fetch 的使用和冲突解决
git branch & checkout fetch 的使用和冲突解决 branch git branch 查看本地分支 git branch -v 查看本地分支的具体信息(commi ...
- shell脚本中的set -e和set -o pipefail
工作中经常在shell脚本中看到set的这两个用法,但就像生活中的很多事情,习惯导致忽视,直到出现问题才引起关注. 1. set -eset命令的-e参数,linux自带的说明如下:"Exi ...