Exemple #1
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());
            }
        }
Exemple #2
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());
            }
        }
Exemple #3
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());
            }
        }
Exemple #4
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());
            }
        }
Exemple #5
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);
            }
        }
        ///<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!");
            }
        }
        ///<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!");
            }
        }
Exemple #8
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());
            }
        }
        ///<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!");
            }
        }
Exemple #10
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;
                }
            }
        }
Exemple #11
0
        /// <summary>
        /// 通过主键删除一条数据
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns>受影响的行数</returns>
        public virtual int Delete(object id)
        {
            using (db = new OracleEntities(connString))
            {
                try
                {
                    var entity = db.Set <T>().Find(id);
                    if (entity != null)
                    {
                        db.Entry(entity).State = System.Data.Entity.EntityState.Deleted;

                        return(db.SaveChanges());
                    }
                    else
                    {
                        return(0);
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }
        ///<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 UpdateProductsFromOracle()
        {
            var oracleContext = new OracleEntities();
            var msSqLcontext  = new SupermarketContext();
            var products      = oracleContext.PRODUCTS
                                .Where(p => p.ISCOPIED == false && p.ISDELETED == false)
                                .Select(p => new
            {
                p.PRODUCTNAME,
                p.PRICE,
                p.VENDOR.VENDORNAME,
                p.MEASURE.MEASURENAME,
                p.PRODUCTSTYPE.TYPENAME
            }).ToList();

            if (products.Count > 0)
            {
                var addedProductsList = new List <string>();

                foreach (var product in products)
                {
                    var productName = product.PRODUCTNAME;
                    var price       = product.PRICE;
                    var vendorId    = MsSqlManager.GetVendorIdByName(product.VENDORNAME);
                    var measureId   = MsSqlManager.GetMeasureIdByName(product.MEASURENAME);
                    var typeId      = MsSqlManager.GetTypeIdByName(product.TYPENAME);

                    try
                    {
                        msSqLcontext.Products.AddOrUpdate(
                            p => p.ProductName,
                            new Product()
                        {
                            ProductName   = productName,
                            VendorId      = vendorId,
                            MeasureId     = measureId,
                            ProductTypeId = typeId,
                            Price         = (float)price
                        });

                        msSqLcontext.SaveChanges();
                        addedProductsList.Add(productName);
                    }
                    catch (Exception ex)
                    {
                        throw new ArgumentException();
                    }
                }

                var productsToChange =
                    oracleContext.PRODUCTS.Where(p => addedProductsList.Contains(p.PRODUCTNAME)).ToList();
                productsToChange.ForEach(p => p.ISCOPIED = true);
                oracleContext.SaveChanges();

                Console.WriteLine("\nAdded new Products from OracleBD into MS SQL Server:");
                productsToChange.ForEach(p => Console.WriteLine("Added product name: {0}", p.PRODUCTNAME));
            }
            else
            {
                Console.WriteLine("\nThere is no new records to import into PRODUCTS table!");
            }
        }