はじめに
Entity Framework(EF)を使ってデータベース操作を行う方法について紹介します。今回は、ユーザー情報を管理する簡単なサービスをSampleとして作成しました。
コードの概要
以下に、ユーザー情報を管理するためのサービスクラスUserInfoService
のコードを示します。
モデルクラス
まず、ユーザー情報を表すモデルクラスを定義します。
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace UserCreator.Models
{
[Table("UserInfo")]
public class UserInfo
{
[Key]
public string UserId { get; set; }
public string Status { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime UpdatedDate { get; set; }
}
}
DbContextクラス
次に、DbContext
クラスを定義します。
using System.Data.Entity;
namespace UserCreator.Models
{
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext() : base("DBConnectionString")
{
Database.SetInitializer(null); // Disable automatic migration
}
public DbSet<UserInfo> UserInfos { get; set; }
}
}
サービスクラス
最後に、ユーザー情報を管理するサービスクラスを定義します。
using System;
using System.Data.SqlClient;
using System.Linq;
namespace UserCreator.Models
{
public class UserInfoService
{
private readonly ApplicationDbContext _context;
public UserInfoService(ApplicationDbContext context)
{
_context = context;
}
public void UpdateUserInfoByFile(SampleUserCode sampleUserCode)
{
var user = _context.UserInfos.SingleOrDefault(u => u.UserId == sampleUserCode.UserId);
if (user != null)
{
user.Status = "Active";
user.UpdatedDate = DateTime.Now;
_context.SaveChanges();
}
}
public void InsertUserInfoByFile(SampleUserCode sampleUserCode)
{
var newUser = new UserInfo
{
UserId = sampleUserCode.UserId,
Status = "Inactive",
CreatedDate = DateTime.Now,
UpdatedDate = DateTime.Now
};
_context.UserInfos.Add(newUser);
_context.SaveChanges();
}
public UserInfo GetUserInfoWithNoLock(string userId)
{
var query = "SELECT TOP 1 * FROM [UserInfo] WITH(NOLOCK) WHERE UserId = @UserId";
var userIdParam = new SqlParameter("@UserId", userId);
return _context.UserInfos
.SqlQuery(query, userIdParam)
.SingleOrDefault();
}
}
}
ポイント
WITH(NOLOCK)
を使用する場合、生のSQLを書く必要があります。Entity FrameworkのLINQクエリではWITH(NOLOCK)
を直接指定することができないため、SQLクエリを直接記述して実行する必要があります。
まとめ
Entity Frameworkを使用することで、データベース操作が簡単に行えるようになります。今回の例では、ユーザー情報の挿入、更新、および取得を行う方法を紹介しました。この記事が参考になれば幸いです。