118 lines · 5.3 KB · C#
RawDownload
//******************************************************************************************************//  RootQueryRestrictionAttribute.cs - Gbtc////  Copyright © 2017, Grid Protection Alliance.  All Rights Reserved.////  Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See//  the NOTICE file distributed with this work for additional information regarding copyright ownership.//  The GPA licenses this file to you under the MIT License (MIT), the "License"; you may//  not use this file except in compliance with the License. You may obtain a copy of the License at:////      http://opensource.org/licenses/MIT////  Unless agreed to in writing, the subject software distributed under the License is distributed on an//  "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the//  License for the specific language governing permissions and limitations.////  Code Modification History://  ----------------------------------------------------------------------------------------------------//  05/14/2017 - J. Ritchie Carroll//       Generated original version of source code.////****************************************************************************************************** using System;using System.Data;using System.Diagnostics.CodeAnalysis; namespace GSF.Data.Model{    /// <summary>    /// Defines an attribute that will mark a modeled table with a record restriction that applies    /// to all query functions for modeled <see cref="TableOperations{T}"/>.    /// </summary>    [SuppressMessage("Microsoft.Design", "CA1019:DefineAccessorsForAttributeArguments")]    [AttributeUsage(AttributeTargets.Class)]    public sealed class RootQueryRestrictionAttribute : Attribute    {        #region [ Members ]         // Fields         /// <summary>        /// Defines filter SQL expression for restriction as a composite format string - does not        /// include WHERE. When escaping is needed for field names, use standard ANSI quotes.        /// </summary>        /// <remarks>        /// <para>        /// Each indexed parameter, e.g., "{0}", in the composite format string will be converted into        /// query parameters where each of the corresponding values in the <see cref="Parameters"/>        /// collection will be applied as <see cref="IDbDataParameter"/> values to an executed        /// <see cref="IDbCommand"/> query.        /// </para>        /// <para>        /// If needed, field names that are escaped with standard ANSI quotes in the filter expression        /// will be updated to reflect what is defined in the user model.        /// </para>        /// </remarks>        public readonly string FilterExpression;         /// <summary>        /// Defines restriction parameter values.        /// </summary>        public readonly object[] Parameters;         /// <summary>        /// Gets or sets flag that determines if root query restriction should be applied to update operations.        /// </summary>        /// <remarks>        /// If root query restriction only references primary key fields, then this property value should        /// be set to <c>false</c> since default update operations for a modeled record already work against        /// primary key fields.        /// </remarks>        public bool ApplyToUpdates;         /// <summary>        /// Gets or sets flag that determines if root query restriction should be applied to delete operations.        /// </summary>        /// <remarks>        /// If root query restriction only references primary key fields, then this property value should        /// be set to <c>false</c> since default delete operations for a modeled record already work against        /// primary key fields.        /// </remarks>        public bool ApplyToDeletes;         #endregion         #region [ Constructors ]         /// <summary>        /// Creates a new parameterized <see cref="RootQueryRestrictionAttribute"/> with the specified        /// SQL filter expression and parameters.        /// </summary>        /// <param name="filterExpression">        /// Filter SQL expression for restriction as a composite format string - does not include WHERE.        /// When escaping is needed for field names, use standard ANSI quotes.        /// </param>        /// <param name="parameters">Restriction parameter values.</param>        /// <remarks>        /// <para>        /// Each indexed parameter, e.g., "{0}", in the composite format <paramref name="filterExpression"/>        /// will be converted into query parameters where each of the corresponding values in the        /// <paramref name="parameters"/> collection will be applied as <see cref="IDbDataParameter"/>        /// values to an executed <see cref="IDbCommand"/> query.        /// </para>        /// <para>        /// If needed, field names that are escaped with standard ANSI quotes in the filter expression        /// will be updated to reflect what is defined in the user model.        /// </para>        /// </remarks>        public RootQueryRestrictionAttribute(string filterExpression, params object[] parameters)        {            FilterExpression = filterExpression;            Parameters = parameters;        }         #endregion    }}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t