示例#1
0
        public void TestBatchUpdate()
        {
            DbTransaction tran = gateway.BeginTransaction();

            gateway.Update <OrderDetailsExtended>(new PropertyItem[] { OrderDetailsExtended._.UnitPrice }, new object[] { 100 }, OrderDetailsExtended._.UnitPrice == 100, tran);
            tran.Commit();
            gateway.CloseTransaction(tran);
            gateway.Update <OrderDetailsExtended>(new PropertyItem[] { OrderDetailsExtended._.UnitPrice }, new object[] { OrderDetailsExtended._.ExtendedPrice }, OrderDetailsExtended._.UnitPrice == 100);
            gateway.Update <OrderDetailsExtended>(new PropertyItem[] { OrderDetailsExtended._.UnitPrice }, new object[] { new PropertyItemParam("{ExtendedPrice} + {ExtendedPrice} + 100") }, OrderDetailsExtended._.UnitPrice == 100);
        }
示例#2
0
        protected override int ExecuteInsert(IDictionary values)
        {
            Gateway gateway = owner.Gateway;
            Type    type    = Util.GetType(this.owner.TypeName);
            object  entity  = Activator.CreateInstance(type);

            foreach (string key in values.Keys)
            {
                PropertyInfo property = Util.DeepGetProperty(type, key);
                if (property.CanWrite)
                {
                    property.SetValue(entity, ChangeType(values[key], property.PropertyType), null);
                }
            }

            NBearDataSourceEventArgs savingArgs = new NBearDataSourceEventArgs(entity);

            owner.OnSaving(savingArgs);
            entity = savingArgs.Entity;

            if (entity == null)
            {
                return(0);
            }

            System.Data.Common.DbTransaction tran = null;
            try
            {
                tran = gateway.BeginTransaction();
                MethodInfo miSave = GetGatewayMethodInfo("Int32 Save[EntityType](EntityType, System.Data.Common.DbTransaction)");
                miSave.MakeGenericMethod(type).Invoke(gateway, new object[] { entity, tran });
                tran.Commit();
            }
            catch
            {
                tran.Rollback();
                throw;
            }
            finally
            {
                gateway.CloseTransaction(tran);
            }
            owner.OnSaved(new NBearDataSourceEventArgs(entity));

            this.OnDataSourceViewChanged(EventArgs.Empty);
            return(1);
        }
示例#3
0
        public void TestAsp11Transaction()
        {
            Guid          id   = default(Guid);
            DbTransaction tran = gateway.BeginTransaction();

            try
            {
                id = CreateSampleData(tran);

                tran.Commit();
            }
            catch
            {
                tran.Rollback();
                throw;
            }
            finally
            {
                gateway.CloseTransaction(tran);
            }

            AgentUser user = gateway.Find <AgentUser>(id);

            Assert.AreNotEqual(user.Profile, null);

            user.Status             = UserStatus.Deleted;
            user.Profile.ContentXml = "modified";

            gateway.Save <AgentUser>(user);
            AgentUser anotherThisUser = gateway.Find <AgentUser>(user.ID);

            Assert.AreEqual(anotherThisUser.Status, user.Status);
            Assert.AreEqual(anotherThisUser.Profile.ContentXml, user.Profile.ContentXml);

            gateway.Delete <User>(user);
            Assert.IsNull(gateway.Find <LocalUser>(id));
            Assert.IsNull(gateway.Find <UserProfile>(id));
        }
示例#4
0
        /// <summary>
        /// 保存卡数据集合代理商
        /// </summary>
        /// <param name="tB_DATA_CARD_LIST"></param>
        /// <returns></returns>
        public int SaveImportCardForAgent(List <TB_DATA_CARD> tB_DATA_CARD_LIST)
        {
            Gateway       gateway = Gateway.Default;
            DbTransaction tran    = gateway.BeginTransaction();

            try
            {
                //取所有非删除的终端用户
                String    endCustomSql  = "select END_CUSTOMER_ID,END_CUSTOMER_NAME FROM [dbo].[TB_DATA_END_CUSTOMER] WHERE STATUS>-1";
                DataTable endCustomData = gateway.FromCustomSql(endCustomSql).ToDataSet().Tables[0];
                for (int i = 0; i < tB_DATA_CARD_LIST.Count; i++)
                {
                    TB_DATA_CARD tB_DATA_CARD = tB_DATA_CARD_LIST[i];
                    String       cardID       = gateway.Find <TB_DATA_CARD>(TB_DATA_CARD._.CARD_ICCID == tB_DATA_CARD.CARD_ICCID || TB_DATA_CARD._.CARD_NO == tB_DATA_CARD.CARD_NO).CARD_ID;
                    if (!String.IsNullOrEmpty(cardID))
                    {
                        String end_customer_id = String.Empty;
                        if (!String.IsNullOrEmpty(tB_DATA_CARD.END_CUSTOMER_ID.Trim()))
                        {
                            end_customer_id = endCustomData.Select().Where(s => s["END_CUSTOMER_NAME"].ToString() == tB_DATA_CARD.END_CUSTOMER_ID.Trim()).Select(s => s["END_CUSTOMER_ID"].ToString()).FirstOrDefault();
                            if (String.IsNullOrEmpty(end_customer_id))
                            {
                                TB_DATA_END_CUSTOMER tB_DATA_END_CUSTOMER = new TB_DATA_END_CUSTOMER();
                                end_customer_id = Guid.NewGuid().ToString();
                                tB_DATA_END_CUSTOMER.END_CUSTOMER_ID   = end_customer_id;
                                tB_DATA_END_CUSTOMER.END_CUSTOMER_NAME = tB_DATA_CARD.END_CUSTOMER_ID.Trim();
                                tB_DATA_END_CUSTOMER.STATUS            = 1;
                                tB_DATA_END_CUSTOMER.CREATED_BY        = tB_DATA_CARD.CREATED_BY;
                                tB_DATA_END_CUSTOMER.CREATED_TIME      = DateTime.Now;
                                tB_DATA_END_CUSTOMER.LAST_UPDATED_BY   = tB_DATA_CARD.CREATED_BY;
                                tB_DATA_END_CUSTOMER.LAST_UPDATED_TIME = DateTime.Now;
                                gateway.Save <TB_DATA_END_CUSTOMER>(tB_DATA_END_CUSTOMER, tran);
                            }
                            tB_DATA_CARD.END_CUSTOMER_ID = end_customer_id;
                        }
                        tB_DATA_CARD.Attach();
                        tB_DATA_CARD.SetModifiedProperties(new Dictionary <string, object> {
                            { "END_CUSTOMER_ID", tB_DATA_CARD.END_CUSTOMER_ID },
                            { "STATUS", tB_DATA_CARD.STATUS },
                            { "SERVICE_PROVIDER", tB_DATA_CARD.SERVICE_PROVIDER },
                            { "REAL_NAME_PERSON", tB_DATA_CARD.REAL_NAME_PERSON },
                            { "REAL_NAME_ID_CARD", tB_DATA_CARD.REAL_NAME_ID_CARD },
                            { "LAST_UPDATED_BY", tB_DATA_CARD.LAST_UPDATED_BY },
                            { "LAST_UPDATED_TIME", tB_DATA_CARD.LAST_UPDATED_TIME }
                        });
                    }
                    gateway.Save <TB_DATA_CARD>(tB_DATA_CARD, tran);
                }
                tran.Commit();
                return(1);
            }
            catch (Exception ex)
            {
                tran.Rollback();
                Log.WriteLog(ex.Message);
                return(0);
            }
            finally
            {
                gateway.CloseTransaction(tran);
                tran.Dispose();
            }
        }
示例#5
0
        /// <summary>
        /// 新增单条卡记录
        /// </summary>
        /// <param name="tB_DATA_CARD"></param>
        /// <returns></returns>
        public int SaveCard(TB_DATA_CARD tB_DATA_CARD)
        {
            Gateway       gateway = Gateway.Default;
            DbTransaction tran    = gateway.BeginTransaction();

            try
            {
                //取所有非删除的代理商
                String    agentSql  = "SELECT [AGENT_ID],[AGENT_NAME] FROM [dbo].[TB_DATA_AGENT] WHERE STATUS>-1";
                DataTable agentData = gateway.FromCustomSql(agentSql).SetTransaction(tran).ToDataSet().Tables[0];
                //取所有非删除的终端用户
                String    endCustomSql  = "select END_CUSTOMER_ID,END_CUSTOMER_NAME FROM  [dbo].[TB_DATA_END_CUSTOMER] WHERE STATUS>-1";
                DataTable endCustomData = gateway.FromCustomSql(endCustomSql).SetTransaction(tran).ToDataSet().Tables[0];
                //取所有非删除的品牌信息
                String    brandSql = "select BRAND_ID,BRAND_NAME FROM [dbo].[TB_DATA_BRAND]";
                DataTable brandData = gateway.FromCustomSql(brandSql).SetTransaction(tran).ToDataSet().Tables[0];
                String    agent_id = String.Empty, end_customer_id = String.Empty, brand_id = String.Empty;
                //获取导入的代理商 终端客户 品牌信息字段对应的ID,不存在就创建对应的信息
                if (!String.IsNullOrEmpty(tB_DATA_CARD.AGENT_ID.Trim()))
                {
                    agent_id = agentData.Select().Where(s => s["AGENT_NAME"].ToString() == tB_DATA_CARD.AGENT_ID.Trim()).Select(s => s["AGENT_ID"].ToString()).FirstOrDefault();
                    if (String.IsNullOrEmpty(agent_id))
                    {
                        TB_DATA_AGENT tB_DATA_AGENT = new TB_DATA_AGENT();
                        agent_id = Guid.NewGuid().ToString();
                        tB_DATA_AGENT.AGENT_ID          = agent_id;
                        tB_DATA_AGENT.AGENT_NAME        = tB_DATA_CARD.AGENT_ID.Trim();
                        tB_DATA_AGENT.STATUS            = 1;
                        tB_DATA_AGENT.CREATED_BY        = tB_DATA_CARD.CREATED_BY;
                        tB_DATA_AGENT.CREATED_TIME      = DateTime.Now;
                        tB_DATA_AGENT.LAST_UPDATED_BY   = tB_DATA_CARD.CREATED_BY;
                        tB_DATA_AGENT.LAST_UPDATED_TIME = DateTime.Now;
                        gateway.Save <TB_DATA_AGENT>(tB_DATA_AGENT, tran);
                    }
                    tB_DATA_CARD.AGENT_ID = agent_id;
                }
                if (!String.IsNullOrEmpty(tB_DATA_CARD.END_CUSTOMER_ID.Trim()))
                {
                    end_customer_id = endCustomData.Select().Where(s => s["END_CUSTOMER_NAME"].ToString() == tB_DATA_CARD.END_CUSTOMER_ID.Trim()).Select(s => s["END_CUSTOMER_ID"].ToString()).FirstOrDefault();
                    if (String.IsNullOrEmpty(end_customer_id))
                    {
                        TB_DATA_END_CUSTOMER tB_DATA_END_CUSTOMER = new TB_DATA_END_CUSTOMER();
                        end_customer_id = Guid.NewGuid().ToString();
                        tB_DATA_END_CUSTOMER.END_CUSTOMER_ID   = end_customer_id;
                        tB_DATA_END_CUSTOMER.END_CUSTOMER_NAME = tB_DATA_CARD.END_CUSTOMER_ID.Trim();
                        tB_DATA_END_CUSTOMER.STATUS            = 1;
                        tB_DATA_END_CUSTOMER.CREATED_BY        = tB_DATA_CARD.CREATED_BY;
                        tB_DATA_END_CUSTOMER.CREATED_TIME      = DateTime.Now;
                        tB_DATA_END_CUSTOMER.LAST_UPDATED_BY   = tB_DATA_CARD.CREATED_BY;
                        tB_DATA_END_CUSTOMER.LAST_UPDATED_TIME = DateTime.Now;
                        gateway.Save <TB_DATA_END_CUSTOMER>(tB_DATA_END_CUSTOMER, tran);
                    }
                    tB_DATA_CARD.END_CUSTOMER_ID = end_customer_id;
                }
                if (!String.IsNullOrEmpty(tB_DATA_CARD.BRAND_ID.Trim()))
                {
                    brand_id = brandData.Select().Where(s => s["BRAND_NAME"].ToString() == tB_DATA_CARD.BRAND_ID.Trim()).Select(s => s["BRAND_ID"].ToString()).FirstOrDefault();
                    if (String.IsNullOrEmpty(brand_id))
                    {
                        TB_DATA_BRAND tB_DATA_BRAND = new TB_DATA_BRAND();
                        brand_id = Guid.NewGuid().ToString();
                        tB_DATA_BRAND.BRAND_ID          = brand_id;
                        tB_DATA_BRAND.BRAND_NAME        = tB_DATA_CARD.BRAND_ID.Trim();
                        tB_DATA_BRAND.CREATED_BY        = tB_DATA_CARD.CREATED_BY;
                        tB_DATA_BRAND.CREATED_TIME      = DateTime.Now;
                        tB_DATA_BRAND.LAST_UPDATED_BY   = tB_DATA_CARD.CREATED_BY;
                        tB_DATA_BRAND.LAST_UPDATED_TIME = DateTime.Now;
                        gateway.Save <TB_DATA_BRAND>(tB_DATA_BRAND, tran);
                    }
                    tB_DATA_CARD.BRAND_ID = brand_id;
                }
                String cardID = gateway.Find <TB_DATA_CARD>(TB_DATA_CARD._.CARD_ICCID == tB_DATA_CARD.CARD_ICCID || TB_DATA_CARD._.CARD_NO == tB_DATA_CARD.CARD_NO).CARD_ID;
                if (!String.IsNullOrEmpty(cardID))
                {
                    tB_DATA_CARD.Attach();
                    tB_DATA_CARD.SetAllPropertiesAsModified();
                }
                gateway.Save <TB_DATA_CARD>(tB_DATA_CARD, tran);
                String updateSql = @"update TB_DATA_AGENT set AGENT_CARD_NUMBER=T.card_count
                                    from (
                                        select count(1) card_count,AGENT_ID from TB_DATA_CARD
                                        GROUP BY AGENT_ID
                                    ) T where TB_DATA_AGENT.AGENT_ID=T.AGENT_ID";
                gateway.FromCustomSql(updateSql).SetTransaction(tran).ExecuteNonQuery();
                tran.Commit();
                return(1);
            }
            catch (Exception ex)
            {
                Log.WriteLog(ex.Message);
                return(0);
            }
        }
示例#6
0
        protected override int ExecuteDelete(IDictionary keys, IDictionary oldValues)
        {
            Gateway gateway = owner.Gateway;
            Type    type    = Util.GetType(this.owner.TypeName);

            string        keyMember         = null;
            Type          keyType           = null;
            object        keyValue          = null;
            PropertyInfo  keyMemberProperty = null;
            List <string> keyNames          = new List <string>();
            List <object> keyValues         = new List <object>();

            if (keys != null && keys.Count > 0)
            {
                IEnumerator en = keys.Keys.GetEnumerator();
                while (en.MoveNext())
                {
                    keyMember = en.Current.ToString();
                    keyNames.Add(keyMember);
                    keyMemberProperty = Util.DeepGetProperty(type, keyMember);
                    keyValue          = ChangeType(keys[keyMember], keyMemberProperty.PropertyType);
                    keyValues.Add(keyValue);
                }
            }
            else
            {
                EntityConfiguration ec = MetaDataManager.GetEntityConfiguration(this.owner.TypeName);
                foreach (PropertyConfiguration pc in ec.Properties)
                {
                    if (pc.IsPrimaryKey)
                    {
                        keyMember = pc.Name;
                        keyNames.Add(keyMember);
                        keyType  = Util.GetType(pc.PropertyType);
                        keyValue = ChangeType(oldValues[keyMember], keyType);
                        keyValues.Add(keyValue);
                    }
                }
            }

            MethodInfo miFind = GetGatewayMethodInfo("EntityType Find[EntityType](System.Object[])");
            object     entity = miFind.MakeGenericMethod(type).Invoke(gateway, new object[] { keyValues.ToArray() });

            if (entity == null)
            {
                return(0);
            }

            //check DBConcurrency
            if (this.owner.ConflictDetection == ConflictOptions.CompareAllValues)
            {
                foreach (string key in oldValues.Keys)
                {
                    if (keyNames.Contains(key))
                    {
                        continue;
                    }
                    PropertyInfo property = Util.DeepGetProperty(type, key);
                    if (property != null && property.GetValue(entity, null) != ChangeType(oldValues[key], property.PropertyType))
                    {
                        throw new System.Data.DBConcurrencyException("The underlying data has changed.");
                    }
                }
            }

            NBearDataSourceEventArgs deletingArgs = new NBearDataSourceEventArgs(entity);

            owner.OnDeleting(deletingArgs);
            entity = deletingArgs.Entity;

            if (entity == null)
            {
                return(0);
            }

            System.Data.Common.DbTransaction tran = null;
            try
            {
                tran = gateway.BeginTransaction();

                MethodInfo miDelete = GetGatewayMethodInfo("Void Delete[EntityType](EntityType, System.Data.Common.DbTransaction)");
                miDelete.MakeGenericMethod(type).Invoke(gateway, new object[] { entity, tran });
                tran.Commit();
            }
            catch
            {
                tran.Rollback();
                throw;
            }
            finally
            {
                gateway.CloseTransaction(tran);
            }

            owner.OnDeleted(new NBearDataSourceEventArgs(entity));

            this.OnDataSourceViewChanged(EventArgs.Empty);
            return(1);
        }
示例#7
0
        protected override int ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues)
        {
            Gateway       gateway           = owner.Gateway;
            Type          type              = Util.GetType(this.owner.TypeName);
            string        keyMember         = null;
            Type          keyType           = null;
            object        keyValue          = null;
            PropertyInfo  keyMemberProperty = null;
            List <string> keyNames          = new List <string>();

            Entity entity = (Entity)Activator.CreateInstance(type);

            if (keys != null && keys.Count > 0)
            {
                IEnumerator en = keys.Keys.GetEnumerator();
                while (en.MoveNext())
                {
                    keyMember = en.Current.ToString();
                    keyNames.Add(keyMember);
                    keyMemberProperty = Util.DeepGetProperty(type, keyMember);
                    keyValue          = ChangeType(keys[keyMember], keyMemberProperty.PropertyType);
                    keyMemberProperty.SetValue(entity, keyValue, null);
                }
            }
            else
            {
                EntityConfiguration ec = MetaDataManager.GetEntityConfiguration(this.owner.TypeName);
                foreach (PropertyConfiguration pc in ec.Properties)
                {
                    if (pc.IsPrimaryKey)
                    {
                        keyMember = pc.Name;
                        keyNames.Add(keyMember);
                        keyType           = Util.GetType(pc.PropertyType);
                        keyValue          = ChangeType(oldValues[keyMember], keyType);
                        keyMemberProperty = Util.DeepGetProperty(type, keyMember);
                        keyMemberProperty.SetValue(entity, keyValue, null);
                    }
                }
            }

            bool changed = false;

            entity.Attach();
            foreach (string key in values.Keys)
            {
                if (keyNames.Contains(key))
                {
                    continue;
                }
                PropertyInfo property = Util.DeepGetProperty(type, key);
                if (this.owner.ConflictDetection == ConflictOptions.CompareAllValues)
                {
                    if (property != null && property.GetValue(entity, null) != ChangeType(oldValues[key], property.PropertyType))
                    {
                        throw new System.Data.DBConcurrencyException("The underlying data has changed.");
                    }
                }
                if (values[key] == oldValues[key])
                {
                    continue;
                }
                if (property != null && property.CanWrite)
                {
                    changed = true;
                    property.SetValue(entity, ChangeType(values[key], property.PropertyType), null);
                }
            }

            if (changed)
            {
                NBearDataSourceEventArgs savingArgs = new NBearDataSourceEventArgs(entity);
                owner.OnSaving(savingArgs);
                entity = (Entity)savingArgs.Entity;

                if (entity == null)
                {
                    return(0);
                }

                System.Data.Common.DbTransaction tran = null;
                try
                {
                    tran = gateway.BeginTransaction();
                    MethodInfo miSave = GetGatewayMethodInfo("Int32 Save[EntityType](EntityType, System.Data.Common.DbTransaction)");
                    miSave.MakeGenericMethod(type).Invoke(gateway, new object[] { entity, tran });
                    tran.Commit();
                }
                catch
                {
                    tran.Rollback();
                    throw;
                }
                finally
                {
                    gateway.CloseTransaction(tran);
                }
                owner.OnSaved(new NBearDataSourceEventArgs(entity));

                this.OnDataSourceViewChanged(EventArgs.Empty);
            }
            return(changed ? 1 : 0);
        }