zoukankan      html  css  js  c++  java
  • .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的列名不一致时,好像没有办法进行处理。

    以上代码仅供演示。

  • 相关阅读:
    如何打一个RPM包
    使用gogs和glide来轻松拉取golang第三方库
    go包管理工具glide使用方法
    安装使用supervisor来启动服务
    Simple, Poetic, Pithy
    令人懊恼的阉割版fabric sdk功能缺失
    如何在golang中打印grpc详细日志
    使用Goland同步远程代码
    如何将github项目上传至gitlab
    openstack搭建之-nova配置(10)
  • 原文地址:https://www.cnblogs.com/youring2/p/9442611.html
Copyright © 2011-2022 走看看