using System; using System.Linq.Expressions; namespace FreeSql { public interface IRepositoryUnitOfWork : IUnitOfWork { /// /// 在工作单元内创建默认仓库类,工作单元下的仓储操作具有事务特点 /// /// /// /// 数据过滤 + 验证 /// IBaseRepository GetRepository(Expression> filter = null) where TEntity : class; /// /// 在工作单元内创建联合主键的仓储类,工作单元下的仓储操作具有事务特点 /// /// /// 数据过滤 + 验证 /// IBaseRepository GetRepository(Expression> filter = null) where TEntity : class; /// /// 在工作单元内创建仓库类,工作单元下的仓储操作具有事务特点 /// /// /// 数据过滤 + 验证 /// 分表规则,参数:旧表名;返回:新表名 https://github.com/2881099/FreeSql/wiki/Repository /// IBaseRepository GetGuidRepository(Expression> filter = null, Func asTable = null) where TEntity : class; } class RepositoryUnitOfWork : UnitOfWork, IRepositoryUnitOfWork { public RepositoryUnitOfWork(IFreeSql fsql) : base(fsql) { } public IBaseRepository GetGuidRepository(Expression> filter = null, Func asTable = null) where TEntity : class { var repo = new GuidRepository(_fsql, filter, asTable); repo.UnitOfWork = this; return repo; } public IBaseRepository GetRepository(Expression> filter = null) where TEntity : class { var repo = new DefaultRepository(_fsql, filter); repo.UnitOfWork = this; return repo; } public IBaseRepository GetRepository(Expression> filter = null) where TEntity : class { var repo = new DefaultRepository(_fsql, filter); repo.UnitOfWork = this; return repo; } } }