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
- XmlILModule.cs
- TextBoxAutomationPeer.cs
- TextBoxAutomationPeer.cs
- OrderedDictionary.cs
- ASCIIEncoding.cs
- _LazyAsyncResult.cs
- RecipientInfo.cs
- AutoCompleteStringCollection.cs
- SqlTransaction.cs
- RuleSet.cs
- RadioButtonStandardAdapter.cs
- DtcInterfaces.cs
- HtmlTitle.cs
- ToolStripDropDownMenu.cs
- ValueUnavailableException.cs
- ProfileGroupSettings.cs
- CmsInterop.cs
- ConnectionAcceptor.cs
- ProxyManager.cs
- BaseDataListDesigner.cs
- HyperLinkField.cs
- AnimationStorage.cs
- Int32EqualityComparer.cs
- Crc32Helper.cs
- FormDocumentDesigner.cs
- GreenMethods.cs
- UIElementPropertyUndoUnit.cs
- HttpApplication.cs
- LayoutUtils.cs
- CustomErrorsSection.cs
- QueryOptionExpression.cs
- LinkUtilities.cs
- KnownBoxes.cs
- SignatureToken.cs
- HelpKeywordAttribute.cs
- PingOptions.cs
- CodeDelegateInvokeExpression.cs
- AssociationSetMetadata.cs
- ReversePositionQuery.cs
- ADMembershipUser.cs
- WebConfigurationHost.cs
- ToolStripSplitButton.cs
- RequestCachingSection.cs
- StrokeCollectionDefaultValueFactory.cs
- Byte.cs
- DeleteIndexBinder.cs
- CompilerInfo.cs
- translator.cs
- DirectoryInfo.cs
- ListView.cs
- ProviderUtil.cs
- SHA512.cs
- WebRequestModuleElement.cs
- wgx_render.cs
- QuaternionValueSerializer.cs
- BindingNavigatorDesigner.cs
- EditorPartDesigner.cs
- AttributeProviderAttribute.cs
- XmlConvert.cs
- Geometry.cs
- SchemaHelper.cs
- DurableInstanceProvider.cs
- TraceListener.cs
- IListConverters.cs
- SizeFConverter.cs
- GuidelineCollection.cs
- DbConnectionPoolGroup.cs
- ByteRangeDownloader.cs
- CommandValueSerializer.cs
- DataColumnChangeEvent.cs
- GroupItem.cs
- CaseExpr.cs
- CreateUserErrorEventArgs.cs
- WeakReference.cs
- OleDbReferenceCollection.cs
- SqlGenerator.cs
- LinkAreaEditor.cs
- ModelItemExtensions.cs
- AmbiguousMatchException.cs
- DynamicRendererThreadManager.cs
- ValidatedControlConverter.cs
- DataObjectAttribute.cs
- MessageSecurityVersionConverter.cs
- WebCategoryAttribute.cs
- AutoSizeToolBoxItem.cs
- WebServiceMethodData.cs
- PeerApplication.cs
- X500Name.cs
- CollectionViewGroupRoot.cs
- ToolStripEditorManager.cs
- ToolStripPanel.cs
- Quaternion.cs
- TransportElement.cs
- ChainOfResponsibility.cs
- TypeToken.cs
- Help.cs
- XmlMemberMapping.cs
- PublisherIdentityPermission.cs
- PenThread.cs
- CodeDirectiveCollection.cs