.net core使用データベース

2820 ワード

.net core使用データベース
.net coreはef coreまたは他のORMフレームを通じてデータにアクセスできます.ここでは例としてEFとDapperを使用します.
EF Coreを使ってデータベースにアクセスする
NET Fraamewarkとデータベースにアクセスしてきました.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,
}
そして私達のDBConteextを作成します.
public class DemoDBContext : DbContext
{
    public DbSet 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を使ったデータのアクセス方法を見てみます.
/// 
///   Dapper     
/// 
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(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)}");
    }
}

///   
/// get the db connection  
///   
///   
///   
public static IDbConnection OpenConnection(string connectionString)
{
    var conn = new NpgsqlConnection(connectionString);
    conn.Open();
    return conn;
}
Dapperはデータベース列のマッピングをサポートしていません.つまり、データベース名とModelの列名が一致しないと、処理ができないようです.
以上のコードはプレゼンテーションのみです.