リポジトリ内の ID でオブジェクトをプルする一般的な方法を考え出そうとしています。私のデータベースでは、通常、すべての ID は主キーであり、整数型です。将来的にはそうではない場合もあるかもしれませんが、それでもすべてのオブジェクトに対して同じメソッドを維持したいと考えています。これが私のインターフェイスの外観です。
public interface IRepository<TE>
{
void Add(TE entity);
void AddOrAttach(TE entity);
void DeleteRelatedEntries(TE entity);
void DeleteRelatedEntries(TE entity, ObservableCollection<string> keyListOfIgnoreEntites);
void Delete(TE entity);
int Save();
//this is where I am stuck
TE GetById();
}
リフレクションを使用してオブジェクトのIDを取得し、その特定のオブジェクトのすべてのオブジェクトを解析するコードを見てきました(理想的ではありません)。私はまた、このようなものを見てきました:
TE GetById(Expression<Func<TE, bool>> predicate);
私はここからそのアイデアを得ました。
私はまだ表現に慣れていないので、これがうまくいくかどうかわかりません。次の表現を含めることができるので、そうなると思います。
var foo = GetById(f => f.Id == 1);
しかし、それは実際には GetById ではなく、任意の式を使用して必要なものを取得できると思いますよね?
どんな考えも高く評価されます。