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); }
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); }