getById函数在存储库模式中使用一个或多个键

时间:2019-05-12 10:19:18

标签: c# entity-framework-6 asp.net-core-2.2

因此,我正在将存储库模式与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);
}

1 个答案:

答案 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)

以此类推