.net core使用データベース
2820 ワード
.net core使用データベース
.net coreはef coreまたは他のORMフレームを通じてデータにアクセスできます.ここでは例としてEFとDapperを使用します.
EF Coreを使ってデータベースにアクセスする
NET Fraamewarkとデータベースにアクセスしてきました.Code-Firstを使って開発することもできます.DB-Firstを使って開発することもできます.既存のデータベースか既存のコードかは気にしません.どうやってアクセスするかに関心があります.
最初にデータモデルのModelを作成します.
プログラムでは、newキーワードを使ってDbContextオブジェクトを作成します.
Dapperを使ってデータにアクセスする
Dapperは軽量級のORMフレームで、性能も優れています.唯一の欠点はSQL脚本を大量に書くことです.Dapperを使ったデータのアクセス方法を見てみます.
以上のコードはプレゼンテーションのみです.
.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の列名が一致しないと、処理ができないようです.以上のコードはプレゼンテーションのみです.