示例#1
0
        protected static DataContext CreateDeleteContext(DomainModel.Spi.DomainModel model, DomainModel.Spi.DomainObject domainObject, IDictionary <string, object> pkData)
        {
            var context         = new DataContext();
            var dataContextItem = new DataContextItem()
            {
                OpType = DataAccessOpType.D
            };

            dataContextItem.PrimaryKeyData = pkData;
            context.Add(domainObject.ID, new List <DataContextItem>()
            {
                dataContextItem
            });

            return(context);
        }
示例#2
0
        private static DataContextItem GetModelObjectPropValue(object data, DomainModel.Spi.DomainObject domainObject, DataAccessOpType opType, bool isUseDbNull)
        {
            var dataContextItem = new DataContextItem()
            {
                OpType = opType
            };

            foreach (var element in domainObject.Elements)
            {
                if (string.IsNullOrWhiteSpace(element.PropertyName))
                {
                    continue;
                }
                bool isPkElement = domainObject.DataObject.Columns.FirstOrDefault(i => i.ID == element.DataColumnID).IsPkColumn;
                var  propValue   = ObjectPropertyValueUtils.GetPropValue(element.PropertyName, data);
                if (propValue != null)
                {
                    dataContextItem.Data.Add(element.ID, propValue);
                    if (isPkElement)
                    {
                        dataContextItem.PrimaryKeyData.Add(element.ID, propValue);
                    }
                }
                else if (isUseDbNull)
                {
                    dataContextItem.Data.Add(element.ID, DBNull.Value);
                    if (isPkElement)
                    {
                        dataContextItem.PrimaryKeyData.Add(element.ID, DBNull.Value);
                    }
                }
            }

            foreach (var association in domainObject.Associations)
            {
                if (association.AssociateType == AssociateType.InnerJoin)
                {
                    continue;
                }
                var associationObject = ObjectPropertyValueUtils.GetPropValue(association.PropertyName, data);

                foreach (var assoItem in association.Items)
                {
                    var element = association.AssoDomainObject.Elements.FirstOrDefault(i => i.ID == assoItem.TargetElementID);
                    if (element == null)
                    {
                        throw new Exception("Invalid Association:" + assoItem.TargetElementID);
                    }
                    var propValue = ObjectPropertyValueUtils.GetPropValue(element.PropertyName, associationObject);

                    if (propValue != null)
                    {
                        dataContextItem.Data.Add(assoItem.SourceElementID, propValue);
                    }
                    else if (isUseDbNull)
                    {
                        dataContextItem.Data.Add(assoItem.SourceElementID, DBNull.Value);
                    }
                }
            }

            return(dataContextItem);
        }