Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / DeleteCardRequest.cs / 1 / DeleteCardRequest.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace; // // Summary // Processes a delete card request. // // // Specify valid parent requests. // class DeleteCardRequest : UIAgentRequest { Uri m_cardId; // Specifies the card identifier. public DeleteCardRequest( IntPtr rpcHandle, Stream inArgs, Stream outArgs, ClientUIRequest parent ) : base( rpcHandle, inArgs, outArgs, parent ) { } protected override void OnInitializeAsSystem() { base.OnInitializeAsSystem(); } // // Summary // Marshals input arguments for the request. The arguments are read from a stream in binary. // protected override void OnMarshalInArgs() { BinaryReader reader = new InfoCardBinaryReader( InArgs, Encoding.Unicode ); m_cardId = Utility.DeserializeUri( reader ); } // // Summary // Processes the request. // // The InfoCard, the claim collection associated with the card and the ledger entries // associated with the card are deleted from the store. // protected override void OnProcess() { StoreConnection connection = StoreConnection.GetConnection(); try { connection.BeginTransaction(); try { string name = null; // // Delete the infocard - we need the full row to get the name. // DataRow row = connection.GetSingleRow( QueryDetails.FullRow, new QueryParameter( SecondaryIndexDefinition.GlobalIdIndex, GlobalId.DeriveFrom( m_cardId.ToString() ) ) ); if( null != row ) { byte[ ] rawForm = row.GetDataField(); try { using ( MemoryStream stream = new MemoryStream( rawForm ) ) { InfoCard ic = new InfoCard( stream ); name = ic.Name; } } finally { connection.Delete( row ); Array.Clear( rawForm, 0, rawForm.Length ); } } IDT.TraceDebug( "Deleted infocard with id: #{0}", m_cardId ); // // Delete any other rows whose parent id is m_cardId // ListparamList = new List (); QueryParameter query = new QueryParameter( SecondaryIndexDefinition.ParentIdIndex, GlobalId.DeriveFrom( m_cardId.ToString() ) ); paramList.Add( query ); ICollection list = ( ICollection )connection.Query( QueryDetails.Identifiers, paramList.ToArray() ); if( null != list && list.Count > 0 ) { foreach( DataRow rowWithParentIdMatch in list ) { connection.Delete( rowWithParentIdMatch ); } } connection.CommitTransaction(); AuditLog.AuditCardDeletion(); } catch { connection.RollbackTransaction(); throw; } } finally { connection.Close(); } IDT.TraceDebug( "Deleted ledger entries with parent id: #{0}", m_cardId ); } // // Summary // Marshals output arguments for the request. The arguments are written to a stream in binary. // protected override void OnMarshalOutArgs() { // // This request has no output arguments. // } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- QueryOperationResponseOfT.cs
- DesignerCapabilities.cs
- HwndTarget.cs
- SerialErrors.cs
- FontDifferentiator.cs
- DependentList.cs
- ControllableStoryboardAction.cs
- LabelDesigner.cs
- DodSequenceMerge.cs
- ProviderIncompatibleException.cs
- DesignColumnCollection.cs
- UInt32Converter.cs
- DropDownList.cs
- OrderByBuilder.cs
- SafeNativeMethods.cs
- EditorZone.cs
- IPAddress.cs
- UniqueConstraint.cs
- DLinqAssociationProvider.cs
- XPathNodeIterator.cs
- DynamicPropertyReader.cs
- SerializationFieldInfo.cs
- EditorPart.cs
- PropertyValueChangedEvent.cs
- GCHandleCookieTable.cs
- Point3DKeyFrameCollection.cs
- BooleanStorage.cs
- DnsPermission.cs
- XPathEmptyIterator.cs
- invalidudtexception.cs
- StackBuilderSink.cs
- CapabilitiesSection.cs
- Console.cs
- MarkupExtensionReturnTypeAttribute.cs
- WebPartDescriptionCollection.cs
- EmptyEnumerator.cs
- WebPartConnectionsEventArgs.cs
- DataTableMapping.cs
- DynamicRendererThreadManager.cs
- Pipe.cs
- SettingsProperty.cs
- LoginView.cs
- TextTreeNode.cs
- QilFunction.cs
- RootProfilePropertySettingsCollection.cs
- CompositeCollection.cs
- NotifyIcon.cs
- EntityDataSourceWizardForm.cs
- RepeaterItem.cs
- SessionParameter.cs
- Collection.cs
- MediaElementAutomationPeer.cs
- ExtenderProvidedPropertyAttribute.cs
- RepeaterDesigner.cs
- ExceptionUtil.cs
- OLEDB_Enum.cs
- BitmapPalette.cs
- RuleRefElement.cs
- WebPartConnectionsCancelEventArgs.cs
- Pointer.cs
- ShaderRenderModeValidation.cs
- ProxyHelper.cs
- XmlSchemaChoice.cs
- XmlSerializerOperationFormatter.cs
- EncryptedXml.cs
- SqlDataSourceView.cs
- ListDesigner.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- SoapConverter.cs
- TreeView.cs
- Vector3DAnimationUsingKeyFrames.cs
- TextServicesCompartment.cs
- DocumentPageTextView.cs
- GCHandleCookieTable.cs
- RectangleF.cs
- SelectiveScrollingGrid.cs
- SystemDropShadowChrome.cs
- UpdatePanelTriggerCollection.cs
- DataGridPagerStyle.cs
- XamlPoint3DCollectionSerializer.cs
- DragEventArgs.cs
- WebPartCollection.cs
- Function.cs
- ListViewDeletedEventArgs.cs
- TypedReference.cs
- Pkcs7Recipient.cs
- HybridDictionary.cs
- TypeToken.cs
- Timer.cs
- WebBrowsableAttribute.cs
- ScrollProperties.cs
- SafeNativeMethods.cs
- DataColumnCollection.cs
- ConnectionsZone.cs
- IsolatedStoragePermission.cs
- MergeFailedEvent.cs
- DataGridHyperlinkColumn.cs
- ContentPosition.cs
- EditorResources.cs
- ControlIdConverter.cs