具有不同类型的Id的通用存储库

时间:2017-10-09 09:04:51

标签: c# generics repository-pattern asp.net-core-2.0

我有一个像这样的通用存储库,允许Id关闭不同的类型(TKey)

public interface IGenericRepository<TEntity, TKey> where TEntity : class
{
  Task<TEntity> GetByIdAsync(TKey id);
  Task<IEnumerable<TEntity>> ListAllAsync();
  Task<IEnumerable<TEntity>> ListAsync(string criteriaName, DynamicParameters parameters);
  Task<TEntity> CreateAsync(TEntity entity);
  Task UpdateAsync(TEntity entity);
  Task DeleteAsync(TKey id);
}

如何在.net core 2服务中注入此内容?我看到这样的例子

services.AddTransient(typeof(IGenericRepository<>), typeof(GenericRepository<>));

如果我删除TKey并将Id修复为INT,则可以找到它。但我希望Id具有灵活性。即有时它是guid或int。我可以制作Id类型的字符串,但这感觉很懒而错!

1 个答案:

答案 0 :(得分:0)

services.AddTransient(typeof(IGenericRepository<,>), typeof(GenericRepository<,>)); 

这对我有用。