仓库用于持久化实体(你可以持久化到本地硬盘,或数据库等),在查询时恢复实体
只有聚合根才有仓库,聚合根内部通过聚合索引访问
通过仓库对聚合进行增删改查
仓库不会提交事物,事物提交在应用层
如下一个示例:
// 页面仓库
// PageBase 聚合根
// EfRepository 基类包含了对实体的 增删改查 等操作
public class PageRepository : EfRepository<PageBase, int>, IPageRepository
{
public PageRepository(IDbContextProvider<IEManageSystemDbContext> dbContextProvider) : base(dbContextProvider)
{
}
// 获取实体
public PageBase GetPageOfAllIncludes(string name) {
PageBase page = Context.Set<ContentPage>()
.Include(e => e.ContentPagePermissionCollection).ThenInclude(e => e.ContentPagePermissions)
.FirstOrDefault(e => e.Name == name);
if (page == null) {
page = Context.Set<StaticPage>()
.FirstOrDefault(e => e.Name == name);
}
return page;
}
}