昨日、早く言えよ、と言われたちょいテク。
##その1
Entity Frameworkのモデルファーストは、クラス自体がデータベースのテーブルになります。
テーブルには必ず共通した、Date情報をいれたいと思います。こういう時は、クラスの継承を使うといいです。
filename
public class BaseModel
{
public DateTime Reg_Date { get; set; }
public DateTime Upd_Date { get; set; }
public bool IsActive { get; set; }
public string Tag { get; set; }
public void SetDate()
{
this.Reg_Date = DateTime.Now;
this.Upd_Date = DateTime.Now;
this.IsActive = true;
}
}
こんな感じのクラスを作って
filename
public class User:BaseModel
{
public int UserId { get; set; }
public string UserName { get; set; }
}
こんな感じに継承を使う。そうすると、継承元のプロパティもテーブルに加わります。
多くのテーブルを作るとき、効果を発揮します。
一つ一つコピペするのも面倒ですしね。(継承自体がコピペをしないようにする技術だw)
新規の列追加の時も、new した後、SetDate()をすれば、面倒な初期値入力から開放されます。楽ちん。
##その2
MVCでの開発の場合、データの処理は、Mのモデルに全部やらせるのが正しいはずです。
問い合わせ方があちこちに散らばるのはよくありません。
しかし、テーブル自体を直接拡張することはできません。
そうなので、こういう拡張メソッドを作るといいかんじです。
filename
public static class UserExtend
{
public static IEnumerable<User> GetByUserName(this DbSet<User> list,string userName)
{
return list.Where(n => n.UserName == userName);
}
}
メソッドチェーンを辿っていくだけで欲しいものが取れるようになります。
テーブルの定義したクラスと同じ所に書いておくと便利でしょう。
使うときは、必ずUsingの設定を忘れないようにしましょう。