Ejemplo n.º 1
0
 /// <summary>
 /// 通过主键查找实体
 /// </summary>
 /// <param name="id">主键</param>
 /// <returns>实体对象</returns>
 public virtual T Get(object id)
 {
     using (db = new OracleEntities(connString))
     {
         return(db.Set <T>().Find(id));
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 获取指定字段的最大值
 /// </summary>
 /// <typeparam name="TSelector"></typeparam>
 /// <param name="selector">需要取的字段</param>
 /// <returns></returns>
 public virtual TSelector Max <TSelector>(Expression <Func <T, TSelector> > selector)
 {
     using (db = new OracleEntities(connString))
     {
         return(db.Set <T>().Max(selector));
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 获取指定字段的最小值
 /// </summary>
 /// <typeparam name="TSelector"></typeparam>
 /// <param name="whereLambda">条件</param>
 /// <param name="selector">需要取的字段</param>
 /// <returns></returns>
 public virtual TSelector Min <TSelector>(Expression <Func <T, bool> > whereLambda, Expression <Func <T, TSelector> > selector)
 {
     using (db = new OracleEntities(connString))
     {
         return(db.Set <T>().Where(whereLambda).Min(selector));
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 获取总的数据条数
 /// </summary>
 /// <returns>数据条数</returns>
 public virtual int Count()
 {
     using (db = new OracleEntities(connString))
     {
         return(db.Set <T>().Count());
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 获取满足条件的数据条数
 /// </summary>
 /// <param name="whereCount">条件</param>
 /// <returns>数据条数</returns>
 public virtual int Count(Expression <Func <T, bool> > whereCount)
 {
     using (db = new OracleEntities(connString))
     {
         return(db.Set <T>().Count(whereCount));
     }
 }
Ejemplo n.º 6
0
        /// <summary>
        /// 修改一条数据
        /// </summary>
        /// <param name="entity">要修改的实体</param>
        /// <param name="propNames">需要修改的属性的属性名,不填则代表所有属性</param>
        /// <returns>受影响的行数</returns>
        public virtual int Update(T entity, params string[] propNames)
        {
            using (db = new OracleEntities(connString))
            {
                var entry = db.Entry(entity);

                if (propNames != null && propNames.Length > 0)
                {
                    entry.State = System.Data.Entity.EntityState.Unchanged;

                    foreach (string propName in propNames)
                    {
                        if (propName.ToLower() != "id")
                        {
                            entry.Property(propName).IsModified = true;
                        }
                    }
                }
                else
                {
                    entry.State = System.Data.Entity.EntityState.Modified;
                }

                db.Configuration.ValidateOnSaveEnabled = false;
                return(db.SaveChanges());
            }
        }
Ejemplo n.º 7
0
 public IList <yingtijianObj> getList(string sqls)
 {
     using (db = new OracleEntities(CommonHelper.EFConnentionString))
     {
         return(db.Database.SqlQuery <yingtijianObj>(sqls).ToList());
     }
 }
Ejemplo n.º 8
0
        private static void ReplicateProducts(SalesSystem.Data.SalesSystemContext sqlContext)
        {
            var oracleDb = new OracleEntities();
            var products = oracleDb.PRODUCTS.Select(p => new
            {
                p.NAME,
                p.MESURE_ID,
                p.PRICE,
                p.VENDOR_ID,

            });
            if (!sqlContext.Products.Any())
            {
                foreach (var product in products)
                {
                    sqlContext.Products.AddOrUpdate(p => p.Name,
                    new Product()
                    {
                        Name = product.NAME,
                        Price = product.PRICE,
                        VendorId = (int)product.VENDOR_ID
                    });
                }

            }
            sqlContext.SaveChanges();
        }
Ejemplo n.º 9
0
        private static void ProductsSeed(SQLEntities context)
        {
            var db       = new OracleEntities();
            var products = db.PRODUCTS.ToList();

            foreach (var product in products)
            {
                if (!(context.Products.Any(p => p.Name == product.NAME)))
                {
                    context.Products.Add(new Product
                    {
                        Name             = product.NAME,
                        MeasurmentUnitId = (int)product.MEASURMENT_UNIT_ID,
                        Price            = product.PRICE,
                        VendorId         = (int)product.VENDOR_ID
                    });
                }
                else
                {
                    var existingEntity = context.Products.First(p => p.Name == product.NAME);
                    if (existingEntity.MeasurmentUnitId != (int)product.MEASURMENT_UNIT_ID ||
                        existingEntity.Price != product.PRICE ||
                        existingEntity.VendorId != (int)product.VENDOR_ID)
                    {
                        existingEntity.MeasurmentUnitId = (int)product.MEASURMENT_UNIT_ID;
                        existingEntity.Price            = product.PRICE;
                        existingEntity.VendorId         = (int)product.VENDOR_ID;
                    }
                }
            }

            context.SaveChanges();
        }
Ejemplo n.º 10
0
        private void ReplicateProducts(SalesSystemContext sqlContext)
        {
            var oracleDb = new OracleEntities();
            var products = oracleDb.PRODUCTS.Select(p => new
            {
                p.NAME,
                p.MESURE_ID,
                p.PRICE,
                p.VENDOR_ID,

            });

                foreach (var product in products)
                {
                    Measure measure = Measure.Pcs;
                    switch ((int)product.MESURE_ID)
                    {
                        case 2: measure = Measure.L; break;
                        case 3: measure = Measure.Ml; break;
                        case 4: measure = Measure.Kg; break;
                        case 5: measure = Measure.Gr; break;
                    }

                    sqlContext.Products.AddOrUpdate(p => p.Name,
                    new Product()
                    {
                        Name = product.NAME,
                        Price = product.PRICE,
                        VendorId = (int)product.VENDOR_ID,
                        Measure = measure
                    });
                }

            sqlContext.SaveChanges();
        }
Ejemplo n.º 11
0
        private static void SalesSeed(SQLEntities context)
        {
            var db = new OracleEntities();

            var sales = db.SALES.ToList();

            foreach (var sale in sales)
            {
                if (!(context.Sales.Any(p => p.SupermarketId == (int)sale.ID &&
                                        p.Quantity == (int)sale.QUANTITY &&
                                        p.SoldOn == (DateTime)sale.SOLD_ON &&
                                        p.ProductId == (int)sale.PRODUCT_ID)))
                {
                    context.Sales.Add(new Sale
                    {
                        SupermarketId = (int)sale.SUPERMARKET_ID,
                        Quantity      = (int)sale.QUANTITY,
                        SoldOn        = (DateTime)sale.SOLD_ON,
                        ProductId     = (int)sale.PRODUCT_ID
                    });
                }
            }

            context.SaveChanges();
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 批量修改满足满足条件的实体
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="whereLambda"></param>
        /// <param name="propertyNames"></param>
        /// <returns></returns>
        public virtual int Update(T entity, Expression <Func <T, bool> > whereLambda, params string[] propertyNames)
        {
            using (db = new OracleEntities(connString))
            {
                List <T> list = db.Set <T>().Where(whereLambda).ToList();

                Type t = typeof(T);

                List <PropertyInfo> propertyInfos = t.GetProperties(BindingFlags.Instance | BindingFlags.Public).ToList();

                Dictionary <string, PropertyInfo> dicPropertys = new Dictionary <string, PropertyInfo>();

                propertyInfos.ForEach(p =>
                {
                    if (propertyNames.Contains(p.Name))
                    {
                        dicPropertys.Add(p.Name, p);
                    }
                });

                if (propertyNames != null && propertyNames.Length > 0)
                {
                    foreach (var propertyName in propertyNames)
                    {
                        if (dicPropertys.ContainsKey(propertyName))
                        {
                            PropertyInfo propInfo = dicPropertys[propertyName];
                            object       newValue = propInfo.GetValue(entity, null);
                            foreach (T item in list)
                            {
                                propInfo.SetValue(item, newValue, null);
                                db.Entry(item).Property(propInfo.Name).IsModified = true;
                            }
                        }
                    }
                }
                else
                {
                    foreach (var property in propertyInfos)
                    {
                        if (property.Name.ToLower() != "id")
                        {
                            object newValue = property.GetValue(entity, null);
                            foreach (T item in list)
                            {
                                property.SetValue(item, newValue, null);
                                db.Entry(item).Property(property.Name).IsModified = true;
                            }
                        }
                    }
                }

                db.Configuration.ValidateOnSaveEnabled = false;



                return(db.SaveChanges());
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 删除一条数据
        /// </summary>
        /// <param name="entity">需要删除的实体</param>
        /// <returns>受影响的行数</returns>
        public virtual int Delete(T entity)
        {
            using (db = new OracleEntities(connString))
            {
                db.Entry(entity).State = System.Data.Entity.EntityState.Deleted;

                return(db.SaveChanges());
            }
        }
Ejemplo n.º 14
0
        /// <summary>
        /// 添加一条数据
        /// </summary>
        /// <param name="entity">要添加的实体</param>
        /// <returns>受影响的行数</returns>
        public virtual int Add(T entity)
        {
            using (db = new OracleEntities(connString))
            {
                db.Set <T>().Add(entity);
                db.Configuration.ValidateOnSaveEnabled = false;

                return(db.SaveChanges());
            }
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 多字段排序的指定字段的分页查询
        /// </summary>
        /// <typeparam name="TKey">实体对象的属性</typeparam>
        /// <typeparam name="TSelector">指定字段对象类型</typeparam>
        /// <param name="pageIndex">页数</param>
        /// <param name="pageSize">每页条数</param>
        /// <param name="whereLambda">条件</param>
        /// <param name="orderLambdas">排序集合</param>
        /// <param name="selector">指定字段对象</param>
        /// <param name="isAscs">是否顺序集合</param>
        /// <returns>指定字段的数据集合</returns>
        public virtual List <TSelector> GetPagedList <TKey, TSelector>(int pageIndex, int pageSize, Expression <Func <T, bool> > whereLambda, IList <Expression <Func <T, TKey> > > orderLambdas, Expression <Func <T, TSelector> > selector, IList <bool> isAscs)
        {
            if (orderLambdas != null)
            {
                if (isAscs == null || orderLambdas.Count != isAscs.Count)
                {
                    throw new Exception("\"排序\"的数量必须和\"是否顺序\"的数量一致");
                }
            }

            var type = typeof(TKey);
            var tkey = type.Assembly.CreateInstance(type.FullName);

            bool isFirstOrder = true;

            using (db = new OracleEntities(connString))
            {
                var queryable = db.Set <T>().Where(whereLambda);

                for (int i = 0; i < orderLambdas.Count; i++)
                {
                    var orderLambda = orderLambdas[i];
                    var isAsc       = isAscs[i];

                    if (isFirstOrder)
                    {
                        if (isAsc)
                        {
                            queryable = queryable.OrderBy(orderLambda);
                        }
                        else
                        {
                            queryable = queryable.OrderByDescending(orderLambda);
                        }

                        isFirstOrder = false;
                    }
                    else
                    {
                        if (isAsc)
                        {
                            queryable = ((IOrderedQueryable <T>)queryable).ThenBy(orderLambda);
                        }
                        else
                        {
                            queryable = ((IOrderedQueryable <T>)queryable).ThenByDescending(orderLambda);
                        }
                    }
                }

                return(queryable.Skip((pageIndex - 1) * pageSize).Take(pageSize).AsNoTracking().Select(selector).ToList());
            }
        }
Ejemplo n.º 16
0
        /// <summary>
        /// 添加一条数据
        /// </summary>
        /// <param name="entity">要添加的实体</param>
        /// <returns>当前添加的实体</returns>
        public virtual T AddAndReturnCurrent(T entity)
        {
            using (db = new OracleEntities(connString))
            {
                var current = db.Set <T>().Add(entity);
                db.Configuration.ValidateOnSaveEnabled = false;

                db.SaveChanges();

                return(current);
            }
        }
Ejemplo n.º 17
0
        private void ReplicateTowns(SalesSystem.Data.SalesSystemContext sqlContext)
        {
            var oracleDb = new OracleEntities();
            var towns = oracleDb.TOWNS.Select(t => t.NAME).ToList();

                foreach (var town in towns)
                {
                    sqlContext.Towns.AddOrUpdate(t => t.Name,
                    new Town() { Name = town });
                }

            sqlContext.SaveChanges();
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 分页查询,并输出总条数
        /// </summary>
        /// <typeparam name="TKey">实体对象的属性</typeparam>
        /// <param name="pageIndex">页数</param>
        /// <param name="pageSize">每页条数</param>
        /// <param name="rowCount">总条数</param>
        /// <param name="whereLambda">条件</param>
        /// <param name="orderByLambda">排序集合</param>
        /// <param name="isAsc">是否顺序集合</param>
        /// <returns>分页实体集合</returns>
        public virtual List <T> GetPagedList <TKey>(int pageIndex, int pageSize, ref int rowCount, Expression <Func <T, bool> > whereLambda, IList <Expression <Func <T, TKey> > > orderLambdas, IList <bool> isAscs)
        {
            if (orderLambdas != null)
            {
                if (isAscs == null || orderLambdas.Count != isAscs.Count)
                {
                    throw new Exception("\"排序\"的数量必须和\"是否顺序\"的数量一致");
                }
            }

            bool isFirstOrder = true;

            using (db = new OracleEntities(connString))
            {
                var queryable = db.Set <T>().Where(whereLambda);
                rowCount = db.Set <T>().Where(whereLambda).Count();

                for (int i = 0; i < orderLambdas.Count; i++)
                {
                    var orderLambda = orderLambdas[i];
                    var isAsc       = isAscs[i];

                    if (isFirstOrder)
                    {
                        if (isAsc)
                        {
                            queryable = queryable.OrderBy(orderLambda);
                        }
                        else
                        {
                            queryable = queryable.OrderByDescending(orderLambda);
                        }

                        isFirstOrder = false;
                    }
                    else
                    {
                        if (isAsc)
                        {
                            queryable = ((IOrderedQueryable <T>)queryable).ThenBy(orderLambda);
                        }
                        else
                        {
                            queryable = ((IOrderedQueryable <T>)queryable).ThenByDescending(orderLambda);
                        }
                    }
                }

                return(queryable.Skip((pageIndex - 1) * pageSize).Take(pageSize).AsNoTracking().ToList());
            }
        }
        ///<summary>
        ///This is summary for method that transfer records from Oracle model into MQ SQL Server model.
        ///The method first select records from Oracle model which have not yet been copied or deleted.
        ///Second it inserts record into MS SQL Method and mark them as copied into Oracle model
        ///</summary>
        public static void UpdateProductsTypesFromOracle()
        {
            var oracleContext = new OracleEntities();
            var msSqLcontext  = new SupermarketContext();
            var productstypes = oracleContext.PRODUCTSTYPES
                                .Where(pt => pt.ISCOPIED == false && pt.ISDELETED == false)
                                .Select(pt => new
            {
                pt.TYPENAME
            }).ToList();

            if (productstypes.Count > 0)
            {
                var addedProductsTypesList = new List <string>();

                foreach (var type in productstypes)
                {
                    var typeName = type.TYPENAME;

                    try
                    {
                        msSqLcontext.ProductTypes.AddOrUpdate(
                            pt => pt.TypeName,
                            new ProductType()
                        {
                            TypeName = typeName
                        });

                        msSqLcontext.SaveChanges();
                        addedProductsTypesList.Add(typeName);
                    }
                    catch (Exception ex)
                    {
                        throw new ArgumentException();
                    }
                }

                var typesToChange =
                    oracleContext.PRODUCTSTYPES.Where(pt => addedProductsTypesList.Contains(pt.TYPENAME)).ToList();
                typesToChange.ForEach(pt => pt.ISCOPIED = true);
                oracleContext.SaveChanges();

                Console.WriteLine("\nAdded new Types from OracleBD into MS SQL Server:");
                typesToChange.ForEach(tp => Console.WriteLine("Added types name: {0}", tp.TYPENAME));
            }
            else
            {
                Console.WriteLine("\nThere is no new records to import into PRODUCTSTYPES table!");
            }
        }
Ejemplo n.º 20
0
 /// <summary>
 /// 分页查询指定字段的数据集合
 /// </summary>
 /// <typeparam name="TKey">实体对象的属性</typeparam>
 /// <typeparam name="TSelector">指定字段对象类型</typeparam>
 /// <param name="pageIndex">页数</param>
 /// <param name="pageSize">每页条数</param>
 /// <param name="whereLambda">条件</param>
 /// <param name="orderByLambda">排序</param>
 /// <param name="selector">指定字段对象</param>
 /// <param name="isAsc">是否顺序,默认值为true</param>
 /// <returns>指定字段的数据集合</returns>
 public virtual List <TSelector> GetPagedList <TKey, TSelector>(int pageIndex, int pageSize, Expression <Func <T, bool> > whereLambda, Expression <Func <T, TKey> > orderByLambda, Expression <Func <T, TSelector> > selector, bool isAsc = true)
 {
     using (db = new OracleEntities(connString))
     {
         if (isAsc)
         {
             return(db.Set <T>().Where(whereLambda).OrderBy(orderByLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).AsNoTracking().Select(selector).ToList());
         }
         else
         {
             return(db.Set <T>().Where(whereLambda).OrderByDescending(orderByLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).AsNoTracking().Select(selector).ToList());
         }
     }
 }
Ejemplo n.º 21
0
        /// <summary>
        /// 删除满足条件的所有实体
        /// </summary>
        /// <param name="whereLambda">条件</param>
        /// <returns>受影响的行数</returns>
        public virtual int Delete(Expression <Func <T, bool> > whereLambda)
        {
            using (db = new OracleEntities(connString))
            {
                List <T> list = db.Set <T>().Where(whereLambda).ToList();

                list.ForEach(t =>
                {
                    db.Entry(t).State = System.Data.Entity.EntityState.Deleted;
                });

                return(db.SaveChanges());
            }
        }
Ejemplo n.º 22
0
 /// <summary>
 /// 通过条件和排序查找满足条件的第一个实体的指定字段数据
 /// </summary>
 /// <typeparam name="TKey">实体对象的属性</typeparam>
 /// <typeparam name="TSelector">指定字段对象类型</typeparam>
 /// <param name="whereLambda">条件</param>
 /// <param name="orderLambda">排序</param>
 /// <param name="selector">指定字段对象</param>
 /// <param name="isAsc">是否顺序,默认值为true</param>
 /// <returns>指定字段的数据对象</returns>
 public virtual TSelector Get <TKey, TSelector>(Expression <Func <T, bool> > whereLambda, Expression <Func <T, TKey> > orderLambda, Expression <Func <T, TSelector> > selector, bool isAsc = true)
 {
     using (db = new OracleEntities(connString))
     {
         if (isAsc)
         {
             return(db.Set <T>().Where(whereLambda).OrderBy(orderLambda).AsNoTracking().Select(selector).FirstOrDefault());
         }
         else
         {
             return(db.Set <T>().Where(whereLambda).OrderByDescending(orderLambda).AsNoTracking().Select(selector).FirstOrDefault());
         }
     }
 }
Ejemplo n.º 23
0
 /// <summary>
 /// 查找满足条件的第一个实体,未找到则返回null
 /// </summary>
 /// <param name="whereLambda">条件</param>
 /// <returns>实体对象</returns>
 public virtual T Get(Expression <Func <T, bool> > whereLambda)
 {
     using (db = new OracleEntities(connString))
     {
         try
         {
             return(db.Set <T>().Where(whereLambda).AsNoTracking().FirstOrDefault());
         }
         catch (Exception e)
         {
             throw e;
         }
     }
 }
Ejemplo n.º 24
0
 /// <summary>
 /// 获取满足条件并指定排序,指定条数,指定字段的数据集合
 /// </summary>
 /// <typeparam name="TKey">实体对象的属性</typeparam>
 /// <typeparam name="TSelector">指定字段对象类型</typeparam>
 /// <param name="top">条数</param>
 /// <param name="whereLambda">条件</param>
 /// <param name="orderLambda">排序</param>
 /// <param name="selector">指定字段对象</param>
 /// <param name="isAsc">是否顺序,默认值为true</param>
 /// <returns>指定字段的数据集合</returns>
 public virtual IList <TSelector> GetList <TKey, TSelector>(int top, Expression <Func <T, bool> > whereLambda, Expression <Func <T, TKey> > orderLambda, Expression <Func <T, TSelector> > selector, bool isAsc = true)
 {
     using (db = new OracleEntities(connString))
     {
         if (isAsc)
         {
             return(db.Set <T>().Where(whereLambda).OrderBy(orderLambda).Take(top).AsNoTracking().Select(selector).ToList());
         }
         else
         {
             return(db.Set <T>().Where(whereLambda).OrderByDescending(orderLambda).Take(top).AsNoTracking().Select(selector).ToList());
         }
     }
 }
Ejemplo n.º 25
0
 /// <summary>
 /// 获取满足条件的指定字段的数据集合
 /// </summary>
 /// <typeparam name="TSelector">指定字段对象类型</typeparam>
 /// <param name="whereLambda">条件</param>
 /// <param name="selector">指定字段对象</param>
 /// <returns>指定字段的数据集合</returns>
 public virtual IList <TSelector> GetList <TSelector>(Expression <Func <T, bool> > whereLambda, Expression <Func <T, TSelector> > selector)
 {
     using (db = new OracleEntities(connString))
     {
         try
         {
             return(db.Set <T>().Where(whereLambda).AsNoTracking().Select(selector).ToList());
         }
         catch (Exception e)
         {
             throw e;
         }
     }
 }
Ejemplo n.º 26
0
 /// <summary>
 /// 获取指定字段的数据集合
 /// </summary>
 /// <typeparam name="TSelector">指定字段对象类型</typeparam>
 /// <param name="selector">指定字段对象</param>
 /// <returns>指定字段的数据集合</returns>
 public virtual IList <TSelector> GetList <TSelector>(Expression <Func <T, TSelector> > selector)
 {
     try
     {
         using (db = new OracleEntities(connString))
         {
             return(db.Set <T>().AsNoTracking().Select(selector).ToList());
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Ejemplo n.º 27
0
 /// <summary>
 /// 获取实体集合
 /// </summary>
 /// <returns>实体集合</returns>
 public virtual IList <T> GetList()
 {
     try
     {
         using (db = new OracleEntities(connString))
         {
             return(db.Set <T>().AsNoTracking().ToList());
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        ///<summary>
        ///This is summary for method that transfer records from Oracle model into MQ SQL Server model.
        ///The method first select records from Oracle model which have not yet been copied or deleted.
        ///Second it inserts record into MS SQL Method and mark them as copied into Oracle model
        ///</summary>
        public static void UpdateVendorsFromOracle()
        {
            var oracleContext = new OracleEntities();
            var msSqLcontext  = new SupermarketContext();
            var vendors       = oracleContext.VENDORS
                                .Where(v => v.ISCOPIED == false && v.ISDELETED == false)
                                .Select(v => new
            {
                v.VENDORNAME
            })
                                .ToList();

            if (vendors.Count > 0)
            {
                var addedVendorsList = new List <string>();

                foreach (var vendor in vendors)
                {
                    var vendorName = vendor.VENDORNAME;

                    try
                    {
                        msSqLcontext.Vendors.AddOrUpdate(
                            v => v.VendorName,
                            new Vendor()
                        {
                            VendorName = vendorName
                        });

                        msSqLcontext.SaveChanges();
                        addedVendorsList.Add(vendorName);
                    }
                    catch (Exception ex)
                    {
                        throw new ArgumentException();
                    }
                }

                var vendorsToChange = oracleContext.VENDORS.Where(v => addedVendorsList.Contains(v.VENDORNAME)).ToList();
                vendorsToChange.ForEach(v => v.ISCOPIED = true);
                oracleContext.SaveChanges();

                Console.WriteLine("\nAdded new Vendors from OracleBD into MS SQL Server:");
                vendorsToChange.ForEach(v => Console.WriteLine("Added vendor name: {0}", v.VENDORNAME));
            }
            else
            {
                Console.WriteLine("\nThere is no new records to import into VENDORS table!");
            }
        }
Ejemplo n.º 29
0
        /// <summary>
        /// 获取满足条件并指定多个排序,指定条数,指定字段的数据集合
        /// </summary>
        /// <typeparam name="TKey">实体对象的属性</typeparam>
        /// <typeparam name="TSelector">指定字段对象类型</typeparam>
        /// <param name="top">条数</param>
        /// <param name="whereLambda">条件</param>
        /// <param name="orderLambdas">排序集合</param>
        /// <param name="selector">指定字段对象</param>
        /// <param name="isAscs">是否顺序集合</param>
        /// <returns>指定字段的数据集合</returns>
        public virtual IList <TSelector> GetList <TKey, TSelector>(int top, Expression <Func <T, bool> > whereLambda, IList <Expression <Func <T, TKey> > > orderLambdas, Expression <Func <T, TSelector> > selector, IList <bool> isAscs)
        {
            if (orderLambdas != null)
            {
                if (isAscs == null || orderLambdas.Count != isAscs.Count)
                {
                    throw new Exception("\"排序\"的数量必须和\"是否顺序\"的数量一致");
                }
            }

            bool isFirstOrder = true;

            using (db = new OracleEntities(connString))
            {
                var queryable = db.Set <T>().Where(whereLambda);

                for (int i = 0; i < orderLambdas.Count; i++)
                {
                    var orderLambda = orderLambdas[i];
                    var isAsc       = isAscs[i];

                    if (isFirstOrder)
                    {
                        if (isAsc)
                        {
                            queryable = queryable.OrderBy(orderLambda);
                        }
                        else
                        {
                            queryable = queryable.OrderByDescending(orderLambda);
                        }

                        isFirstOrder = false;
                    }
                    else
                    {
                        if (isAsc)
                        {
                            queryable = ((IOrderedQueryable <T>)queryable).ThenBy(orderLambda);
                        }
                        else
                        {
                            queryable = ((IOrderedQueryable <T>)queryable).ThenByDescending(orderLambda);
                        }
                    }
                }

                return(queryable.Take(top).AsNoTracking().Select(selector).ToList());
            }
        }
        ///<summary>
        ///This is summary for method that transfer records from Oracle model into MQ SQL Server model.
        ///The method first select records from Oracle model which have not yet been copied or deleted.
        ///Second it inserts record into MS SQL Method and mark them as copied into Oracle model
        ///</summary>
        public static void UpdateMeasuresFromOracle()
        {
            var oracleContext = new OracleEntities();
            var msSqLcontext  = new SupermarketContext();
            var measures      = oracleContext.MEASURES
                                .Where(m => m.ISCOPIED == false && m.ISDELETED == false)
                                .Select(m => new
            {
                m.MEASURENAME
            }).ToList();

            if (measures.Count > 0)
            {
                var addedMeasuresList = new List <string>();

                foreach (var measure in measures)
                {
                    var measureName = measure.MEASURENAME;

                    try
                    {
                        msSqLcontext.Measures.AddOrUpdate(
                            m => m.MeasureName,
                            new Measure()
                        {
                            MeasureName = measureName
                        });

                        msSqLcontext.SaveChanges();
                        addedMeasuresList.Add(measureName);
                    }
                    catch (Exception ex)
                    {
                        throw new ArgumentException();
                    }
                }

                var measuresToChange = oracleContext.MEASURES.Where(m => addedMeasuresList.Contains(m.MEASURENAME)).ToList();
                measuresToChange.ForEach(m => m.ISCOPIED = true);
                oracleContext.SaveChanges();

                Console.WriteLine("\nAdded new Measures from OracleBD into MS SQL Server:");
                measuresToChange.ForEach(m => Console.WriteLine("Added measure name: {0}", m.MEASURENAME));
            }
            else
            {
                Console.WriteLine("\nThere is no new records to import into MEASURES table!");
            }
        }
Ejemplo n.º 31
0
        /// <summary>
        /// 添加一个集合的数据
        /// </summary>
        /// <param name="list">要添加的实体集合</param>
        /// <returns>受影响的行数</returns>
        public virtual int Add(IList <T> list)
        {
            using (db = new OracleEntities(connString))
            {
                db.Set <T>().AddRange(list);
                db.Configuration.ValidateOnSaveEnabled = false;

                try
                {
                    return(db.SaveChanges());
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
Ejemplo n.º 32
0
        private static void SupermarketsSeed(SQLEntities context)
        {
            var db = new OracleEntities();

            var supermarkets = db.SUPERMARKETS.ToList();

            foreach (var supermarket in supermarkets)
            {
                if (!(context.Supermarkets.Any(p => p.Name == supermarket.NAME)))
                {
                    context.Supermarkets.Add(new Supermarket
                    {
                        Name = supermarket.NAME
                    });
                }
            }

            context.SaveChanges();
        }
Ejemplo n.º 33
0
        private static void VendorsSeed(SQLEntities context)
        {
            var db = new OracleEntities();

            var vendors = db.VENDORS.ToList();

            foreach (var vendor in vendors)
            {
                if (!(context.Vendors.Any(p => p.Name == vendor.NAME)))
                {
                    context.Vendors.Add(new Vendor
                    {
                        Name = vendor.NAME
                    });
                }
            }

            context.SaveChanges();
        }
Ejemplo n.º 34
0
        private static void ReplicateVendors(SalesSystem.Data.SalesSystemContext sqlContext)
        {
            var oracleDb = new OracleEntities();
            var vendors = oracleDb.VENDORS.Select(v => new
            {
                v.NAME,
                v.ADDRESS,
                v.BULSTAT,
                v.TOWN_ID
            });

            if (!sqlContext.Vendors.Any())
            {
                foreach (var vendor in vendors)
                {
                    sqlContext.Vendors.AddOrUpdate(v => v.BulstratUI,
                    new Vendor() { Name = vendor.NAME, Address = vendor.ADDRESS, TownId = (int)vendor.TOWN_ID, BulstratUI = vendor.BULSTAT });
                }
                sqlContext.SaveChanges();
            }
        }