私は Entity Framework/MVC 4 を学習中で、リポジトリの作成と EF の抽象化に関するいくつかのチュートリアルに従い始めました。
私が気付いたのは、EF が既に UnitOfWork/Repository パターンのように見えることです。
を基本クラスとして使用してカスタム DbSet を作成しようとしましDbSet<TEntity>
たが、次の例外のために機能しませんでした: The type 'System.Data.Entity.DbSet<TEntity>' has no constructors defined
.
これが私がやろうとしていることです:
public class RolesDbSet : DbSet<Role>
{
public bool IsNameInUse(string name, int id = 0)
{
if (id == 0)
return this.Any(r => r.Name == name);
return this.Any(r => r.Name == name && r.ID != id);
}
}
public class MyEntities : DbContext
{
public MyEntities() : base("MyEntities")
{
Database.SetInitializer(new MyDevelopmentInitializer());
}
public RolesDbSet Roles { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<Password> Passwords { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UserConfiguration());
base.OnModelCreating(modelBuilder);
}
}
次に、これを行うことができます:
bool inUse;
using (var db = new MyEntities())
{
inUse = db.Roles.IsNameInUse("Employee");
}
これを達成する方法はありますか?