多くのプロジェクトでは、ユーザーを含むテーブルを作成し、認証、保存などの標準ユーザーベースの機能を実装する必要があります。したがって、これらの機能を含むクラスライブラリを作成することにしました。たとえば、Entity Framework拡張可能なフレームワーク
public class User
{
public int? Id {get;set;}
public string UserName {get;set;}
public string Password {get;set;}
}
public class MyDbContext : DbContext
{
public DbSet<User> {get;set;}
}
public class UserService
{
public MyDbContext Context {get;set;} // will be initialized in constructor
public User GetByUserName(string username)
{
return (from s in Context.Users where s.UserName.Equals(username) select s).SingleOrDefault();
}
// etc...
}
新しいMvcプロジェクトを開始するときに、このライブラリを追加してカスタムモデルでDbContextを拡張します。問題は、私は、たとえば、いくつかの追加のフィールドを持つUserテーブルを拡張する方法がわからないです。この場合は
public class MyUser : User
{
public bool IsApproved {get;set;}
}
public class CustomDbContext : MyDbContext
{
public DbSet<SomeOtherModel> {get;set;}
// problem: override DbSet in MyDbContext with class MyUser?
//public DbSet<MyUser> {get;set;}
}
私もMyDbContext
のDbSet<User>
をオーバーライドする必要があります。ライブラリ内のDbSet<User>
を削除すると、私のUserService
クラスはもう使えなくなります。どのように拡張可能なフレームワークを作るためのアイデア?
ありがとうございます、これはうまく動作します! – Marthijn