因此,我正在将存储库模式与asp.net核心和实体框架6配合使用,以从服务层访问数据库。问题是我有一个具有复合键的实体,而通用存储库将int作为参数,因此我无法将多个变量传递给find()。
我尝试将int更改为object并在需要时发送带有2个id的对象,但这似乎不起作用。
public interface IRepository<T> where T : class
{
IEnumerable<T> GetAll();
T GetById( int id);
void Update(T entity);
void Create(T entity);
void Delete(T entity);
}
答案 0 :(得分:1)
您可以使它与查找方法具有相同的签名
public virtual TEntity Find(params object[] keyValues);
接受键值为params
类型的object
所以会是
T GetById(params object[] keyValues);
因此在这种情况下,它将接受任何数量的任何类型的主键
例如
new customerRepo().GetById(123)
new customerRepo().GetById(123,1)
以此类推