.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