.net core使用數據庫

.net core使用數據庫

.net core 經過能夠經過ef core或其它ORM框架進行數據訪問。此處使用EF和Dapper做爲示例。sql

使用EF Core訪問數據庫

與 .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訪問數據

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

相關文章
相關標籤/搜索