You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,111 @@
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
// <copyright file="DbQueryCommandTree.cs" company="Microsoft">
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
//
|
||||
// @owner [....]
|
||||
// @backupOwner [....]
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Data.Metadata.Edm;
|
||||
using System.Data.Common.CommandTrees.Internal;
|
||||
using System.Linq;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace System.Data.Common.CommandTrees
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a query operation expressed as a canonical command tree.
|
||||
/// </summary>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")]
|
||||
public sealed class DbQueryCommandTree : DbCommandTree
|
||||
{
|
||||
// Query expression
|
||||
private readonly DbExpression _query;
|
||||
|
||||
// Parameter information (will be retrieved from the query expression of the command tree during construction)
|
||||
private System.Collections.ObjectModel.ReadOnlyCollection<DbParameterReferenceExpression> _parameters;
|
||||
|
||||
private DbQueryCommandTree(MetadataWorkspace metadata,
|
||||
DataSpace dataSpace,
|
||||
DbExpression query,
|
||||
bool validate)
|
||||
: base(metadata, dataSpace)
|
||||
{
|
||||
// Ensure the query expression is non-null
|
||||
EntityUtil.CheckArgumentNull(query, "query");
|
||||
|
||||
if (validate)
|
||||
{
|
||||
// Use the valid workspace and data space to validate the query expression
|
||||
DbExpressionValidator validator = new DbExpressionValidator(metadata, dataSpace);
|
||||
validator.ValidateExpression(query, "query");
|
||||
|
||||
this._parameters = validator.Parameters.Select(paramInfo => paramInfo.Value).ToList().AsReadOnly();
|
||||
}
|
||||
this._query = query;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructs a new DbQueryCommandTree that uses the specified metadata workspace.
|
||||
/// </summary>
|
||||
/// <param name="metadata">The metadata workspace that the command tree should use.</param>
|
||||
/// <param name="dataSpace">The logical 'space' that metadata in the expressions used in this command tree must belong to.</param>
|
||||
/// <param name="query">A <see cref="DbExpression"/> that defines the logic of the query.</param>
|
||||
/// <exception cref="ArgumentNullException"><paramref name="metadata"/> or <paramref name="query"/> is null</exception>
|
||||
/// <exception cref="ArgumentException"><paramref name="dataSpace"/> does not represent a valid data space</exception>
|
||||
/*CQT_PUBLIC_API(*/internal/*)*/ DbQueryCommandTree(MetadataWorkspace metadata, DataSpace dataSpace, DbExpression query)
|
||||
: this(metadata, dataSpace, query, true)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a <see cref="DbExpression"/> that defines the logic of the query.
|
||||
/// </summary>
|
||||
public DbExpression Query
|
||||
{
|
||||
get { return this._query; }
|
||||
}
|
||||
|
||||
internal override DbCommandTreeKind CommandTreeKind
|
||||
{
|
||||
get { return DbCommandTreeKind.Query; }
|
||||
}
|
||||
|
||||
internal override IEnumerable<KeyValuePair<string, TypeUsage>> GetParameters()
|
||||
{
|
||||
if (this._parameters == null)
|
||||
{
|
||||
this._parameters = ParameterRetriever.GetParameters(this);
|
||||
}
|
||||
return this._parameters.Select(p => new KeyValuePair<string, TypeUsage>(p.ParameterName, p.ResultType));
|
||||
}
|
||||
|
||||
internal override void DumpStructure(ExpressionDumper dumper)
|
||||
{
|
||||
if (this.Query != null)
|
||||
{
|
||||
dumper.Dump(this.Query, "Query");
|
||||
}
|
||||
}
|
||||
|
||||
internal override string PrintTree(ExpressionPrinter printer)
|
||||
{
|
||||
return printer.Print(this);
|
||||
}
|
||||
|
||||
internal static DbQueryCommandTree FromValidExpression(MetadataWorkspace metadata, DataSpace dataSpace, DbExpression query)
|
||||
{
|
||||
#if DEBUG
|
||||
return new DbQueryCommandTree(metadata, dataSpace, query);
|
||||
#else
|
||||
return new DbQueryCommandTree(metadata, dataSpace, query, false);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user