| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | using System;using System.Collections;using System.Collections.Generic;using System.Data.Entity;using System.Data.Entity.Infrastructure;using System.Linq;using System.Reflection;using System.Web;namespace iBemsDataService.Util{    public class QueryManager<TModel> where TModel : class, new()    {        DbContext DbContext { get; set; }        public QueryManager( DbContext dbContext )        {            this.DbContext = dbContext;        }        public bool Delete<TDbSet>( TDbSet dbSet , TModel model , bool isAttach = true )            where TDbSet : DbSet<TModel>        {            try            {                if (isAttach) dbSet.Attach( model );                dbSet.Remove( model );            }            catch( DbUpdateException )            {                throw;            }            return true;        }        public bool Delete<TDbSet>( TDbSet dbSet , IQueryable queryToDelete )            where TDbSet : DbSet<TModel>        {            try            {                foreach( TModel deleteItem in queryToDelete )                {                    dbSet.Remove( deleteItem );                }            }            catch( DbUpdateException )            {                throw;            }            return true;        }        public bool DeleteAndInsert<TDbSet , TList>( TDbSet dbSet , TList list , IQueryable queryToDelete )            where TDbSet : DbSet<TModel>            where TList : IList        {            try            {                foreach( TModel deleteItem in queryToDelete )                {                    dbSet.Remove( deleteItem );                }                //Type itemType = list.GetType().GetGenericTypeDefinition();                PropertyInfo[] listItemProperties = null;                var modelType = typeof( TModel );                                foreach( var item in list )                {                    if (item == null)                        break;                    var model = new TModel();                    if ( listItemProperties == null )                    {                        listItemProperties = item.GetType().GetProperties();                    }                    foreach( var p in listItemProperties )                    {                        modelType.GetProperty( p.Name ).SetValue( model , p.GetValue( item ) );                    }                    dbSet.Add( model );                }                this.DbContext.SaveChanges();            }            catch( DbUpdateException )            {                //if( FmsWorkOrderToToFacilityExists( FmsWorkOrderToToFacility.SiteId ) )                //{                //    return Conflict();                //}                //else                {                    throw;                }                //                return false;            }            return true;        }    }}
 |