.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的列名不一致时,好像没有办法进行处理。

以上代码仅供演示。

最新文章

  1. HTTP状态码302、303和307的故事
  2. iOS中的线程安全问题
  3. Python之操作Redis、 RabbitMQ、SQLAlchemy、paramiko、mysql
  4. VISIBLE、INVISIBLE、GONE的区别
  5. CentOS6.5下安装apache2.2和PHP 5.5.28
  6. HDOJ(HDU) 1799 循环多少次?(另类杨辉三角)
  7. 取出js对象的所有属性的方式
  8. 【.NET】发送Email
  9. Vue深度学习(6)- 组件
  10. Java中的静态和枚举
  11. Vue基础(ES6)
  12. php数组函数大全
  13. ID基本操作(在框架内处理文本)5.28
  14. ip2Long 代码
  15. webstorm&#39;s interpreter
  16. 前端之Bootstrap框架
  17. [转]USB之Part 4 - Protocol
  18. js获取checkbox复选框获取选中的选项
  19. 【python3】 django2.0 加载css 、js 、img 等静态文件
  20. linux每天一小步---head命令详解

热门文章

  1. 【Android】Android自定义属性,attr format取值类型
  2. CentOS7.5安装nodejs 转
  3. IIS:另一个程序正在使用此文件进程无法访问。
  4. ionic2程序调试
  5. jquery对form表单复杂(多个)条件的判断验证
  6. DateFormat抽象类实现日期与字符串的转换
  7. Python GUI - tkinter
  8. day41 mycql 函数
  9. hust 1010 The Minimum Length(循环节)【KMP】
  10. nginx: [error] open() &quot;/var/run/nginx/nginx.pid&quot; failed (2: No such file or directory)