単体テスト用の偽データの作成を簡素化するために、一般的なエンティティ (他の多くのクラスの基になるオブジェクトとして使用する) を作成できる関数が必要です。エンティティにはインデックスがあり、新しいインデックスを生成するために、現在の最大数を見つけて追加したいだけです。
私は他の多くのクラスに Index を使用しており、この関数をできるだけ汎用的にしたいと考えています。私の問題は、ジェネリック関数で使用する DbSet を指定する方法がわからないことです GetMaxID
。
これは私がこれまでに得たものです:
private Entity CreateGenericEntity()
{
return new Entity()
{
Guid = Guid.NewGuid(),
Index = GetMaxID<Entity>(x => x.Index) + 1,
};
}
private int GetMaxID<TEntity>(Expression<Func<TEntity, int>> expression)
{
return _repository.Set<TEntity>().Max(expression);
}
_repository
次のようなさまざまな IDbSets プロパティの束があります。
public IDbSet<Customers> Customers{ get; set; }
public IDbSet<Orders> Orders{ get; set; }
等