.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的列名不一致時,好像沒有辦法進行處理。

以上代碼僅供演示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM