Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / Utils / CommandHelper.cs / 1305376 / CommandHelper.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Diagnostics; using System.Data.Metadata.Edm; using System.Data.EntityClient; using System.Data.Objects; namespace System.Data.Common.Utils { ////// Contains utility methods for construction of DB commands through generic /// provider interfaces. /// internal static class CommandHelper { ////// Consumes all rows and result sets from the reader. This allows client to retrieve /// parameter values and intercept any store exceptions. /// /// reader to consume internal static void ConsumeReader(DbDataReader reader) { if (null != reader && !reader.IsClosed) { while (reader.NextResult()) { // Note that we only walk through the result sets. We don't need // to walk through individual rows (though underlying provider // implementation may do so) } } } ////// requires: commandText must not be null /// The command text must be in the form Container.FunctionImportName. /// internal static void ParseFunctionImportCommandText(string commandText, string defaultContainerName, out string containerName, out string functionImportName) { Debug.Assert(null != commandText); // Split the string string[] nameParts = commandText.Split('.'); containerName = null; functionImportName = null; if (2 == nameParts.Length) { containerName = nameParts[0].Trim(); functionImportName = nameParts[1].Trim(); } else if (1 == nameParts.Length && null != defaultContainerName) { containerName = defaultContainerName; functionImportName = nameParts[0].Trim(); } if (string.IsNullOrEmpty(containerName) || string.IsNullOrEmpty(functionImportName)) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_InvalidStoredProcedureCommandText); } } ////// Given an entity command, returns the associated entity transaction and performs validation /// to ensure the transaction is consistent. /// /// Entity command instance. Must not be null. ///Entity transaction internal static EntityTransaction GetEntityTransaction(EntityCommand entityCommand) { Debug.Assert(null != entityCommand); EntityTransaction entityTransaction = (EntityTransaction)entityCommand.Transaction; // Check to make sure that either the command has no transaction associated with it, or it // matches the one used by the connection if (entityTransaction != null && entityTransaction != entityCommand.Connection.CurrentTransaction) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_InvalidTransactionForCommand); } // Now we have asserted that EntityCommand either has no transaction or has one that matches the // one used in the connection, we can simply use the connection's transaction object entityTransaction = entityCommand.Connection.CurrentTransaction; return entityTransaction; } ////// Given an entity command and entity transaction, passes through relevant state to store provider /// command. /// /// Entity command. Must not be null. /// Entity transaction. Must not be null. /// Store provider command that is being setup. Must not be null. internal static void SetStoreProviderCommandState(EntityCommand entityCommand, EntityTransaction entityTransaction, DbCommand storeProviderCommand) { Debug.Assert(null != entityCommand); Debug.Assert(null != storeProviderCommand); storeProviderCommand.CommandTimeout = entityCommand.CommandTimeout; storeProviderCommand.Connection = ((EntityConnection)entityCommand.Connection).StoreConnection; storeProviderCommand.Transaction = (null != entityTransaction) ? entityTransaction.StoreTransaction : null; storeProviderCommand.UpdatedRowSource = entityCommand.UpdatedRowSource; } ////// Given an entity command and store provider command, sets all output parameter values on the entity command. /// /// Entity command on which to set parameter values. Must not be null. /// Store provider command from which to retrieve parameter values. Must not /// be null. internal static void SetEntityParameterValues(EntityCommand entityCommand, DbCommand storeProviderCommand) { Debug.Assert(null != entityCommand); Debug.Assert(null != storeProviderCommand); foreach (DbParameter storeParameter in storeProviderCommand.Parameters) { ParameterDirection direction = storeParameter.Direction; if (0 != (direction & ParameterDirection.Output)) { // if the entity command also defines the parameter, propagate store parameter value // to entity parameter int parameterOrdinal = entityCommand.Parameters.IndexOf(storeParameter.ParameterName); if (0 <= parameterOrdinal) { EntityParameter entityParameter = entityCommand.Parameters[parameterOrdinal]; entityParameter.Value = storeParameter.Value; } } } } // requires: all arguments must be given internal static EdmFunction FindFunctionImport(MetadataWorkspace workspace, string containerName, string functionImportName) { Debug.Assert(null != workspace && null != containerName && null != functionImportName); // find entity container EntityContainer entityContainer; if (!workspace.TryGetEntityContainer(containerName, DataSpace.CSpace, out entityContainer)) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_UnableToFindFunctionImportContainer( containerName)); } // find function import EdmFunction functionImport = null; foreach (EdmFunction candidate in entityContainer.FunctionImports) { if (candidate.Name == functionImportName) { functionImport = candidate; break; } } if (null == functionImport) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_UnableToFindFunctionImport( containerName, functionImportName)); } return functionImport; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Diagnostics; using System.Data.Metadata.Edm; using System.Data.EntityClient; using System.Data.Objects; namespace System.Data.Common.Utils { ////// Contains utility methods for construction of DB commands through generic /// provider interfaces. /// internal static class CommandHelper { ////// Consumes all rows and result sets from the reader. This allows client to retrieve /// parameter values and intercept any store exceptions. /// /// reader to consume internal static void ConsumeReader(DbDataReader reader) { if (null != reader && !reader.IsClosed) { while (reader.NextResult()) { // Note that we only walk through the result sets. We don't need // to walk through individual rows (though underlying provider // implementation may do so) } } } ////// requires: commandText must not be null /// The command text must be in the form Container.FunctionImportName. /// internal static void ParseFunctionImportCommandText(string commandText, string defaultContainerName, out string containerName, out string functionImportName) { Debug.Assert(null != commandText); // Split the string string[] nameParts = commandText.Split('.'); containerName = null; functionImportName = null; if (2 == nameParts.Length) { containerName = nameParts[0].Trim(); functionImportName = nameParts[1].Trim(); } else if (1 == nameParts.Length && null != defaultContainerName) { containerName = defaultContainerName; functionImportName = nameParts[0].Trim(); } if (string.IsNullOrEmpty(containerName) || string.IsNullOrEmpty(functionImportName)) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_InvalidStoredProcedureCommandText); } } ////// Given an entity command, returns the associated entity transaction and performs validation /// to ensure the transaction is consistent. /// /// Entity command instance. Must not be null. ///Entity transaction internal static EntityTransaction GetEntityTransaction(EntityCommand entityCommand) { Debug.Assert(null != entityCommand); EntityTransaction entityTransaction = (EntityTransaction)entityCommand.Transaction; // Check to make sure that either the command has no transaction associated with it, or it // matches the one used by the connection if (entityTransaction != null && entityTransaction != entityCommand.Connection.CurrentTransaction) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_InvalidTransactionForCommand); } // Now we have asserted that EntityCommand either has no transaction or has one that matches the // one used in the connection, we can simply use the connection's transaction object entityTransaction = entityCommand.Connection.CurrentTransaction; return entityTransaction; } ////// Given an entity command and entity transaction, passes through relevant state to store provider /// command. /// /// Entity command. Must not be null. /// Entity transaction. Must not be null. /// Store provider command that is being setup. Must not be null. internal static void SetStoreProviderCommandState(EntityCommand entityCommand, EntityTransaction entityTransaction, DbCommand storeProviderCommand) { Debug.Assert(null != entityCommand); Debug.Assert(null != storeProviderCommand); storeProviderCommand.CommandTimeout = entityCommand.CommandTimeout; storeProviderCommand.Connection = ((EntityConnection)entityCommand.Connection).StoreConnection; storeProviderCommand.Transaction = (null != entityTransaction) ? entityTransaction.StoreTransaction : null; storeProviderCommand.UpdatedRowSource = entityCommand.UpdatedRowSource; } ////// Given an entity command and store provider command, sets all output parameter values on the entity command. /// /// Entity command on which to set parameter values. Must not be null. /// Store provider command from which to retrieve parameter values. Must not /// be null. internal static void SetEntityParameterValues(EntityCommand entityCommand, DbCommand storeProviderCommand) { Debug.Assert(null != entityCommand); Debug.Assert(null != storeProviderCommand); foreach (DbParameter storeParameter in storeProviderCommand.Parameters) { ParameterDirection direction = storeParameter.Direction; if (0 != (direction & ParameterDirection.Output)) { // if the entity command also defines the parameter, propagate store parameter value // to entity parameter int parameterOrdinal = entityCommand.Parameters.IndexOf(storeParameter.ParameterName); if (0 <= parameterOrdinal) { EntityParameter entityParameter = entityCommand.Parameters[parameterOrdinal]; entityParameter.Value = storeParameter.Value; } } } } // requires: all arguments must be given internal static EdmFunction FindFunctionImport(MetadataWorkspace workspace, string containerName, string functionImportName) { Debug.Assert(null != workspace && null != containerName && null != functionImportName); // find entity container EntityContainer entityContainer; if (!workspace.TryGetEntityContainer(containerName, DataSpace.CSpace, out entityContainer)) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_UnableToFindFunctionImportContainer( containerName)); } // find function import EdmFunction functionImport = null; foreach (EdmFunction candidate in entityContainer.FunctionImports) { if (candidate.Name == functionImportName) { functionImport = candidate; break; } } if (null == functionImport) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_UnableToFindFunctionImport( containerName, functionImportName)); } return functionImport; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MimeBasePart.cs
- SqlUtils.cs
- RootBuilder.cs
- Transform.cs
- RelationshipEndCollection.cs
- AutoResetEvent.cs
- ThemeDirectoryCompiler.cs
- MonikerUtility.cs
- XmlArrayItemAttributes.cs
- ReturnType.cs
- DifferencingCollection.cs
- PersonalizationState.cs
- SystemIPGlobalStatistics.cs
- ClientBuildManager.cs
- HtmlUtf8RawTextWriter.cs
- ParameterBinding.cs
- EditorPartCollection.cs
- SiteMapHierarchicalDataSourceView.cs
- ExceptionRoutedEventArgs.cs
- ObjectDataSource.cs
- ChannelCacheSettings.cs
- TextMarkerSource.cs
- RequestCacheEntry.cs
- WebEventCodes.cs
- MessageDroppedTraceRecord.cs
- Metafile.cs
- ScopeCollection.cs
- SqlCrossApplyToCrossJoin.cs
- Point3DCollection.cs
- PolygonHotSpot.cs
- ViewSimplifier.cs
- AnnotationResource.cs
- OdbcConnectionHandle.cs
- DependsOnAttribute.cs
- IndexingContentUnit.cs
- MetadataCollection.cs
- DragEventArgs.cs
- ServiceXNameTypeConverter.cs
- COM2ComponentEditor.cs
- BamlBinaryWriter.cs
- RawStylusActions.cs
- MouseGesture.cs
- DesignerDataColumn.cs
- WorkflowCompensationBehavior.cs
- TreeNodeBinding.cs
- MatrixAnimationUsingKeyFrames.cs
- PropertyTabAttribute.cs
- OdbcParameterCollection.cs
- Error.cs
- HierarchicalDataSourceIDConverter.cs
- SafeNativeMethods.cs
- BindableAttribute.cs
- ExpressionHelper.cs
- SessionPageStateSection.cs
- OdbcCommandBuilder.cs
- ToolstripProfessionalRenderer.cs
- RequestQueryProcessor.cs
- SqlCacheDependencyDatabaseCollection.cs
- RoleGroupCollection.cs
- XmlSchemaComplexContent.cs
- XmlLoader.cs
- ArgumentOutOfRangeException.cs
- ConfigurationSectionHelper.cs
- XPathDocumentBuilder.cs
- AttachedProperty.cs
- RuntimeEnvironment.cs
- ExpressionBuilder.cs
- AddInIpcChannel.cs
- Group.cs
- securitycriticaldataformultiplegetandset.cs
- BridgeDataRecord.cs
- BufferModesCollection.cs
- TypeGeneratedEventArgs.cs
- InplaceBitmapMetadataWriter.cs
- TextTreeRootNode.cs
- WebEventTraceProvider.cs
- LabelLiteral.cs
- TraceHelpers.cs
- ListChunk.cs
- SoapRpcServiceAttribute.cs
- RequestBringIntoViewEventArgs.cs
- DocumentSchemaValidator.cs
- XmlUtil.cs
- ProgressBarRenderer.cs
- BuilderPropertyEntry.cs
- XamlReader.cs
- ObjectStateManagerMetadata.cs
- Literal.cs
- SerializationException.cs
- Command.cs
- DetailsViewUpdatedEventArgs.cs
- Model3DGroup.cs
- WebCategoryAttribute.cs
- CLRBindingWorker.cs
- HuffCodec.cs
- DecimalStorage.cs
- InkCanvasSelectionAdorner.cs
- GenericTextProperties.cs
- PageHandlerFactory.cs
- unsafeIndexingFilterStream.cs