c# - getById 函数在存储库模式中采用一个或多个键
问题描述
所以我使用带有 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);
}
解决方案
你可以让它与 find 方法的签名相同
public virtual TEntity Find(params object[] keyValues);
接受键值作为params
类型object
所以它会是
T GetById(params object[] keyValues);
所以在这种情况下,它将接受任何类型的主键的任何计数
例如
new customerRepo().GetById(123)
new customerRepo().GetById(123,1)
等等
推荐阅读
- gremlin - 如何在 gremlin 查询中将多个对象合并为一个?
- apache - 删除查询字符串参数并将其放入路径中
- python-3.x - Flask 应用程序:Heroku Postgres 无法从数据库加载记住的用户
- powershell - 从 Powershell 中的 TRAP 中排除错误代码
- c# - C# 和 EF Core 中具有相同结构的动态表名
- python - 具有 np.where 条件的列的切片字符串不起作用
- mingw - MSYS angleproject 构建 - 补丁问题
- android - 添加 .aar 文件后无法调试 android 应用程序
- css - 使用css在顶部和右侧的半彩色边框
- javascript - 在 Django 中从字典中存储文件