.net core 经过能够经过ef core或其它ORM框架进行数据访问。此处使用EF和Dapper做为示例。sql
与 .NET Framework访问数据库一直,咱们能够使用Code-First进行开发,也能够使用DB-First进行开发。咱们不关心是现有数据库仍是现有代码,咱们关心如何进行访问。数据库
首先建立数据模型Model:app
[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数据库。ide
在程序中,咱们使用new关键字建立DbContext对象:post
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是一个轻量级的ORM框架,性能也很好,惟一的缺点是须要写大量的SQL脚本。咱们来看一下如何使用Dapper进行数据访问的。ui
/// <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
以上代码仅供演示。postgresql