/// <summary> /// 构造函数 /// </summary> /// <param name="data">数据</param> /// <param name="columnOrdinals">列的位置集合</param> /// <param name="primaryKeyData">主键数据</param> /// <param name="opType">数据操作类型</param> public DataContextItem(Hashtable data, Dictionary <int, string> columnOrdinals, Dictionary <string, object> primaryKeyData, DataAccessOpType opType) : this(data, columnOrdinals, opType) { this.primaryKeyData = primaryKeyData; }
/// <summary> /// 构造函数 /// </summary> /// <param name="data">数据</param> /// <param name="columnOrdinals">列的位置集合</param> /// <param name="opType">数据操作类型</param> public DataContextItem(Hashtable data, Dictionary <int, string> columnOrdinals, DataAccessOpType opType) { this.data = data; this.OpType = opType; this.columnOrdinals = columnOrdinals; }
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); }
/// <summary> /// 构造数据上下文 /// </summary> /// <typeparam name="T">数据类型</typeparam> /// <param name="model">领域模型</param> /// <param name="opType">数据访问类型</param> /// <param name="data">数据</param> /// <returns>数据上下文</returns> public static DataContext CreateDataContext <T>(DomainModel.Spi.DomainModel model, DomainModel.Spi.DomainObject domainObject, DataAccessOpType opType, T data) { DataContext dataContext = null; switch (opType) { case DataAccessOpType.I: dataContext = CreateSaveContext(model, domainObject, data); break; case DataAccessOpType.Q: dataContext = CreateQueryContext(model, domainObject, data as IDictionary <string, object>); break; case DataAccessOpType.U: dataContext = CreateUpdateContext(model, domainObject, data); break; case DataAccessOpType.D: dataContext = CreateDeleteContext(model, domainObject, data as IDictionary <string, object>); break; default: break; } return(dataContext); }
private static void LoopGetModelObjectPropValue(DomainModel.Spi.DomainObject domainObject, DataContext context, object data, DataAccessOpType opType, bool isUseDbNull) { if (domainObject.ChildDomainObjects.Count > 0) { foreach (var childModelObject in domainObject.ChildDomainObjects) { var objectList = ObjectPropertyValueUtils.GetCollectionPropValue(childModelObject.PropertyName, data); var items = new List <DataContextItem>(objectList.Count()); foreach (var obj in objectList) { items.Add(GetModelObjectPropValue(obj, childModelObject, opType, isUseDbNull)); } context.Add(childModelObject.ID, items); } } }