Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Common / QueryCache / EntitySqlQueryCacheKey.cs / 1 / EntitySqlQueryCacheKey.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....], [....]
//-----------------------------------------------------------------------------
namespace System.Data.Common.QueryCache
{
using System;
using System.Data.Objects;
using System.Diagnostics;
///
/// Represents an Entity-SQL-based ObjectQuery Cache key context
///
internal sealed class EntitySqlQueryCacheKey : QueryCacheKey
{
///
/// Aggregate hashcode based the hashcode of the properties of this cache key
///
private readonly int _hashCode;
///
/// The name of the default container in effect when the Entity-SQL text was parsed
/// (affects whether or not the text can be successfully parsed)
///
private string _defaultContainer;
///
/// Entity Sql statement
///
private readonly string _eSqlStatement;
///
/// Parameter collection token
///
private readonly string _parametersToken;
///
/// Number of parameters
///
private readonly int _parameterCount;
///
/// Concatenated representation of the Include span paths
///
private readonly string _includePathsToken;
///
/// The merge option in effect
///
private readonly MergeOption _mergeOption;
///
/// Result type affects assembly plan.
///
private readonly Type _resultType;
///
/// Creates a new instance of ObjectQueryCacheKey given a entityCommand instance
///
/// The default container name in effect when parsing the query (may be null)
/// The Entity-SQL text of the query
/// The number of parameters to the query
/// A string representation of the parameters to the query (may be null)
/// A string representation of the Include span paths in effect (may be null)
/// The merge option in effect. Required for result assembly.
internal EntitySqlQueryCacheKey(string defaultContainerName,
string eSqlStatement,
int parameterCount,
string parametersToken,
string includePathsToken,
MergeOption mergeOption,
Type resultType)
: base()
{
Debug.Assert(null != eSqlStatement, "eSqlStatement must not be null");
_defaultContainer = defaultContainerName;
_eSqlStatement = eSqlStatement;
_parameterCount = parameterCount;
_parametersToken = parametersToken;
_includePathsToken = includePathsToken;
_mergeOption = mergeOption;
_resultType = resultType;
int combinedHash = _eSqlStatement.GetHashCode() ^
_mergeOption.GetHashCode();
if (_parametersToken != null)
{
combinedHash ^= _parametersToken.GetHashCode();
}
if (_includePathsToken != null)
{
combinedHash ^= _includePathsToken.GetHashCode();
}
if (_defaultContainer != null)
{
combinedHash ^= _defaultContainer.GetHashCode();
}
_hashCode = combinedHash;
}
///
/// Determines equality of two cache keys based on cache context values
///
///
///
public override bool Equals(object otherObject)
{
Debug.Assert(null != otherObject, "otherObject must not be null");
if (typeof(EntitySqlQueryCacheKey) != otherObject.GetType())
{
return false;
}
EntitySqlQueryCacheKey otherObjectQueryCacheKey = (EntitySqlQueryCacheKey)otherObject;
// also use result type...
return (_parameterCount == otherObjectQueryCacheKey._parameterCount) &&
(_mergeOption == otherObjectQueryCacheKey._mergeOption) &&
Equals(otherObjectQueryCacheKey._defaultContainer, _defaultContainer) &&
Equals(otherObjectQueryCacheKey._eSqlStatement, _eSqlStatement) &&
Equals(otherObjectQueryCacheKey._includePathsToken, _includePathsToken) &&
Equals(otherObjectQueryCacheKey._parametersToken, _parametersToken) &&
Equals(otherObjectQueryCacheKey._resultType, _resultType);
}
///
/// Returns the hashcode for this cache key
///
///
public override int GetHashCode()
{
return _hashCode;
}
///
/// Returns a string representation of the state of this cache key
///
///
/// A string representation that includes query text, parameter information, include path information
/// and merge option information about this cache key.
///
public override string ToString()
{
return String.Join("|", new string[] { _defaultContainer, _eSqlStatement, _parametersToken, _includePathsToken, Enum.GetName(typeof(MergeOption), _mergeOption) });
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....], [....]
//-----------------------------------------------------------------------------
namespace System.Data.Common.QueryCache
{
using System;
using System.Data.Objects;
using System.Diagnostics;
///
/// Represents an Entity-SQL-based ObjectQuery Cache key context
///
internal sealed class EntitySqlQueryCacheKey : QueryCacheKey
{
///
/// Aggregate hashcode based the hashcode of the properties of this cache key
///
private readonly int _hashCode;
///
/// The name of the default container in effect when the Entity-SQL text was parsed
/// (affects whether or not the text can be successfully parsed)
///
private string _defaultContainer;
///
/// Entity Sql statement
///
private readonly string _eSqlStatement;
///
/// Parameter collection token
///
private readonly string _parametersToken;
///
/// Number of parameters
///
private readonly int _parameterCount;
///
/// Concatenated representation of the Include span paths
///
private readonly string _includePathsToken;
///
/// The merge option in effect
///
private readonly MergeOption _mergeOption;
///
/// Result type affects assembly plan.
///
private readonly Type _resultType;
///
/// Creates a new instance of ObjectQueryCacheKey given a entityCommand instance
///
/// The default container name in effect when parsing the query (may be null)
/// The Entity-SQL text of the query
/// The number of parameters to the query
/// A string representation of the parameters to the query (may be null)
/// A string representation of the Include span paths in effect (may be null)
/// The merge option in effect. Required for result assembly.
internal EntitySqlQueryCacheKey(string defaultContainerName,
string eSqlStatement,
int parameterCount,
string parametersToken,
string includePathsToken,
MergeOption mergeOption,
Type resultType)
: base()
{
Debug.Assert(null != eSqlStatement, "eSqlStatement must not be null");
_defaultContainer = defaultContainerName;
_eSqlStatement = eSqlStatement;
_parameterCount = parameterCount;
_parametersToken = parametersToken;
_includePathsToken = includePathsToken;
_mergeOption = mergeOption;
_resultType = resultType;
int combinedHash = _eSqlStatement.GetHashCode() ^
_mergeOption.GetHashCode();
if (_parametersToken != null)
{
combinedHash ^= _parametersToken.GetHashCode();
}
if (_includePathsToken != null)
{
combinedHash ^= _includePathsToken.GetHashCode();
}
if (_defaultContainer != null)
{
combinedHash ^= _defaultContainer.GetHashCode();
}
_hashCode = combinedHash;
}
///
/// Determines equality of two cache keys based on cache context values
///
///
///
public override bool Equals(object otherObject)
{
Debug.Assert(null != otherObject, "otherObject must not be null");
if (typeof(EntitySqlQueryCacheKey) != otherObject.GetType())
{
return false;
}
EntitySqlQueryCacheKey otherObjectQueryCacheKey = (EntitySqlQueryCacheKey)otherObject;
// also use result type...
return (_parameterCount == otherObjectQueryCacheKey._parameterCount) &&
(_mergeOption == otherObjectQueryCacheKey._mergeOption) &&
Equals(otherObjectQueryCacheKey._defaultContainer, _defaultContainer) &&
Equals(otherObjectQueryCacheKey._eSqlStatement, _eSqlStatement) &&
Equals(otherObjectQueryCacheKey._includePathsToken, _includePathsToken) &&
Equals(otherObjectQueryCacheKey._parametersToken, _parametersToken) &&
Equals(otherObjectQueryCacheKey._resultType, _resultType);
}
///
/// Returns the hashcode for this cache key
///
///
public override int GetHashCode()
{
return _hashCode;
}
///
/// Returns a string representation of the state of this cache key
///
///
/// A string representation that includes query text, parameter information, include path information
/// and merge option information about this cache key.
///
public override string ToString()
{
return String.Join("|", new string[] { _defaultContainer, _eSqlStatement, _parametersToken, _includePathsToken, Enum.GetName(typeof(MergeOption), _mergeOption) });
}
}
}
// 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
- OuterGlowBitmapEffect.cs
- TableRow.cs
- DbReferenceCollection.cs
- x509utils.cs
- CodeObject.cs
- SystemIPInterfaceStatistics.cs
- AccessDataSource.cs
- ComponentCommands.cs
- Compiler.cs
- _NtlmClient.cs
- DefaultBinder.cs
- TextServicesPropertyRanges.cs
- CalendarDesigner.cs
- StorageMappingItemLoader.cs
- _NegoStream.cs
- ReflectTypeDescriptionProvider.cs
- ColorConvertedBitmap.cs
- Model3DGroup.cs
- UidManager.cs
- KeyValuePair.cs
- TimeSpan.cs
- SortQueryOperator.cs
- XmlTextReaderImpl.cs
- SelectionListDesigner.cs
- RelationshipType.cs
- CounterCreationDataCollection.cs
- DataServiceBuildProvider.cs
- ProcessModule.cs
- CodeComment.cs
- User.cs
- SqlNamer.cs
- LabelInfo.cs
- DataGridBoolColumn.cs
- TableCellAutomationPeer.cs
- EnumConverter.cs
- Tokenizer.cs
- Tablet.cs
- WFItemsToSpacerVisibility.cs
- ThumbAutomationPeer.cs
- AuthorizationRule.cs
- WebRequest.cs
- Config.cs
- TextDecorations.cs
- newinstructionaction.cs
- TypeInitializationException.cs
- OutputBuffer.cs
- FloaterParaClient.cs
- CompressedStack.cs
- LocalIdKeyIdentifierClause.cs
- CodeDomExtensionMethods.cs
- ListenerElementsCollection.cs
- Variable.cs
- PointLightBase.cs
- Italic.cs
- WebPartZoneBase.cs
- DataGridCommandEventArgs.cs
- PageAsyncTaskManager.cs
- XmlSchemaSimpleContentExtension.cs
- BamlTreeMap.cs
- MultipartIdentifier.cs
- ScriptManager.cs
- RadialGradientBrush.cs
- ComplexBindingPropertiesAttribute.cs
- GenericRootAutomationPeer.cs
- EFColumnProvider.cs
- StringSource.cs
- IsolatedStoragePermission.cs
- MachineKeyConverter.cs
- WebPartRestoreVerb.cs
- Substitution.cs
- References.cs
- WebConfigurationManager.cs
- Win32MouseDevice.cs
- AutomationFocusChangedEventArgs.cs
- ProxyHelper.cs
- MemoryStream.cs
- ProcessThread.cs
- TemplateParser.cs
- SharedUtils.cs
- _SSPIWrapper.cs
- ProxyHwnd.cs
- Utils.cs
- pingexception.cs
- TransactionManager.cs
- SQLInt64.cs
- DataGridViewImageColumn.cs
- DropDownButton.cs
- SystemIPv6InterfaceProperties.cs
- ContainerParaClient.cs
- SplitContainer.cs
- WebPartsPersonalization.cs
- TextSchema.cs
- PrintDialog.cs
- DependencyStoreSurrogate.cs
- DEREncoding.cs
- IndentedTextWriter.cs
- HtmlInputSubmit.cs
- UseLicense.cs
- HtmlInputButton.cs
- EmptyReadOnlyDictionaryInternal.cs