【发布时间】:2019-04-27 20:52:20
【问题描述】:
我想通过提供主键数组来检索多条记录,我必须为所有实体创建通用方法。
private DbSet<TEntity> _entities;
/// <summary>
/// Get entity by identifier
/// </summary>
/// <param name="id">Identifier</param>
/// <returns>Entity</returns>
public virtual TEntity GetById(object id)
{
return Entities.Find(id);
}
/// <summary>
/// Get entity by identifier
/// </summary>
/// <param name="id">Identifier</param>
/// <returns>Entity</returns>
public virtual List<TEntity> GetByIds(int id[])
{
// want to make it generic
return Entities.Where(x=>id.Contains(id));
}
/// <summary>
/// Gets an entity set
/// </summary>
protected virtual DbSet<TEntity> Entities
{
get
{
if (_entities == null)
_entities = _context.Set<TEntity>();
return _entities;
}
}
这里的问题是我的实体没有 ID 列,例如 Product 有 ProductId,Order 有 OrderId。我不想将我的 db 列更改为 Id。
Entities.Where(x=>id.Contains(id));
我希望我的实体列与现在相同。我可以用这个 db 结构实现一个通用的搜索方法来查找多条记录吗?
【问题讨论】:
-
或者,接受
DbSet已经是一个通用存储库的事实? -
不是另一个通用存储库。 DbConext 是工作单元,DbSet 是存储库。
-
@Fabio 不,它没有。
Find接受由一个或多个值组成的 单个 PK(在复合 PK 的情况下)。 -
hi @IvanStoev 注意警告:此 API 支持 Entity Framework Core 基础架构,不打算直接从您的代码中使用。此 API 可能会在未来的版本中更改或删除。 docs.microsoft.com/en-us/dotnet/api/…
标签: c# .net entity-framework .net-core entity-framework-core