/// <summary> /// 更新记录状态 /// </summary> /// <param name="dataRow">记录</param> /// <param name="updateType">操作类型</param> private void SetRowState(DataRow dataRow, UpdateType updateType) { if (dataRow.RowState != DataRowState.Unchanged) return; if (updateType == UpdateType.Add) dataRow.SetAdded(); if (updateType == UpdateType.Modify) dataRow.SetModified(); }
private void CreateRow(EntityObject entityObject, DataRow parentRow, Dictionary<EntityKey, EntityState> states, DataSet dataset) { var tableName = entityObject.GetType().Name; var dataTable = dataset.Tables[tableName]; var state = GetState(entityObject, states, parentRow); DataRow dataRow = null; if (state == EntityState.Added) { dataRow = dataTable.NewRow(); ApplyValue(dataRow, entityObject); dataTable.Rows.Add(dataRow); ApplyRelationValue(dataRow, parentRow, dataset); if (parentRow != null && parentRow.RowState == DataRowState.Unchanged) { parentRow.SetModified(); } } else { dataRow = dataTable.Rows.Find(entityObject.EntityKey.EntityKeyValues.Select(c => c.Value).ToArray()); if (dataRow != null) { if (state == EntityState.Deleted) { dataRow.Delete(); } else { ApplyValue(dataRow, entityObject); } } } var navigationProperties = entityObject.GetType().GetProperties().Where(c => typeof(IList).IsAssignableFrom(c.PropertyType)); foreach (var navigationProperty in navigationProperties) { var navigationValue = (IList)navigationProperty.GetValue(entityObject, null); foreach (EntityObject childObject in navigationValue) { CreateRow(childObject, dataRow, states, dataset); } } }
//刷新缓存记录的数据 protected void UpdateSummaryRowState(DataRow dataRow) { dataRow.AcceptChanges(); if (_UpdateType == UpdateType.Modify) dataRow.SetModified(); if (_UpdateType == UpdateType.Add) dataRow.SetAdded(); }