using PoweredSoft.DbContext.Core; using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data.Entity; using System.Linq; using System.Text; namespace PoweredSoft.DbContext.EntityFramework { public class DbSetService : DbQueryService, IDbSetService where TEntity : class { public DbSetService(DbSet dbSet) : base(dbSet) { DbSet = dbSet; } protected DbSet DbSet { get; } public ICollection Local => DbSet.Local; IList IDbSetService.Local => DbSet.Local; public TEntity Add(TEntity entity) => DbSet.Add(entity); public TEntity Remove(TEntity entity) => DbSet.Remove(entity); IEnumerator IEnumerable.GetEnumerator() => ((IQueryable)DbSet).GetEnumerator(); public TEntity Create() => DbSet.Create(); public TEntity Attach(TEntity entity) => DbSet.Attach(entity); public DbSet GetEntityFrameworkSet() => DbSet; public TEntity Find(params object[] keyValues) => DbSet.Find(keyValues); void IDbSetService.AddRange(IEnumerable entities) => DbSet.AddRange(entities); void IDbSetService.RemoveRange(IEnumerable entities) => DbSet.RemoveRange(entities); public object Add(object entity) => DbSet.Add((TEntity)entity); public void AddRange(IEnumerable entities) => DbSet.AddRange(entities.Cast()); public object Remove(object entity) => DbSet.Remove((TEntity)entity); public void RemoveRange(IEnumerable entities) => DbSet.RemoveRange(entities.Cast()); object IDbSetService.Find(params object[] keyValues) => DbSet.Find(keyValues); public object Attach(object entity) => DbSet.Attach((TEntity)entity); } }