| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- //------------------------------------------------------------------------------
- // <copyright file="Constraint.cs" company="Microsoft">
- // Copyright (c) Microsoft Corporation. All rights reserved.
- // </copyright>
- // <owner current="true" primary="true">[....]</owner>
- // <owner current="true" primary="false">[....]</owner>
- // <owner current="false" primary="false">[....]</owner>
- //------------------------------------------------------------------------------
- namespace System.Data {
- using System;
- using System.ComponentModel;
- using System.Globalization;
- /// <devdoc>
- /// <para>Represents a constraint that can be enforced on one or
- /// more <see cref='System.Data.DataColumn'/> objects.</para>
- /// </devdoc>
- [
- DefaultProperty("ConstraintName"),
- TypeConverter(typeof(ConstraintConverter))
- ]
- public abstract class Constraint {
- internal String name = "";
- private String _schemaName = "";
- private bool inCollection = false;
- private DataSet dataSet = null;
- internal PropertyCollection extendedProperties = null;
- /// <devdoc>
- /// <para>The name of this constraint within the <see cref='System.Data.ConstraintCollection'/>
- /// .</para>
- /// </devdoc>
- [
- DefaultValue(""),
- ResDescriptionAttribute(Res.ConstraintNameDescr),
- ResCategoryAttribute(Res.DataCategory_Data)
- ]
- public virtual string ConstraintName {
- get {
- return name;
- }
- set {
- if (value == null)
- value = "";
- if (Common.ADP.IsEmpty(value) && (Table != null) && InCollection)
- throw ExceptionBuilder.NoConstraintName();
- CultureInfo locale = (Table != null ? Table.Locale : CultureInfo.CurrentCulture);
- if (String.Compare(name, value, true, locale) != 0) {
- if ((Table != null) && InCollection) {
- Table.Constraints.RegisterName(value);
- if (name.Length != 0)
- Table.Constraints.UnregisterName(name);
- }
- name = value;
- }
- else if (String.Compare(name, value, false, locale) != 0) {
- name = value;
- }
- }
- }
- internal String SchemaName {
- get {
- if (Common.ADP.IsEmpty(_schemaName))
- return ConstraintName;
- else
- return _schemaName;
- }
- set {
- if (!Common.ADP.IsEmpty(value))
- _schemaName = value;
- }
- }
- internal virtual bool InCollection {
- get { // ACCESSOR: virtual was missing from this get
- return inCollection;
- }
- set {
- inCollection = value;
- if (value)
- dataSet = Table.DataSet;
- else
- dataSet = null;
- }
- }
- /// <devdoc>
- /// <para>Gets the <see cref='System.Data.DataTable'/> to which the constraint applies.</para>
- /// </devdoc>
- [ResDescriptionAttribute(Res.ConstraintTableDescr)]
- public abstract DataTable Table {
- get;
- }
- /// <devdoc>
- /// <para>Gets the collection of customized user information.</para>
- /// </devdoc>
- [
- ResCategoryAttribute(Res.DataCategory_Data),
- Browsable(false),
- ResDescriptionAttribute(Res.ExtendedPropertiesDescr)
- ]
- public PropertyCollection ExtendedProperties {
- get {
- if (extendedProperties == null) {
- extendedProperties = new PropertyCollection();
- }
- return extendedProperties;
- }
- }
- internal abstract bool ContainsColumn(DataColumn column);
- internal abstract bool CanEnableConstraint();
- internal abstract Constraint Clone(DataSet destination);
- internal abstract Constraint Clone(DataSet destination, bool ignoreNSforTableLookup);
- internal void CheckConstraint() {
- if (!CanEnableConstraint()) {
- throw ExceptionBuilder.ConstraintViolation(ConstraintName);
- }
- }
- internal abstract void CheckCanAddToCollection(ConstraintCollection constraint);
- internal abstract bool CanBeRemovedFromCollection(ConstraintCollection constraint, bool fThrowException);
- internal abstract void CheckConstraint(DataRow row, DataRowAction action);
- internal abstract void CheckState();
- protected void CheckStateForProperty() {
- try {
- CheckState();
- }
- catch (Exception e) {
- //
- if (!Common.ADP.IsCatchableExceptionType (e)) {
- throw;
- }
- throw ExceptionBuilder.BadObjectPropertyAccess(e.Message);
- }
- }
- /// <devdoc>
- /// <para>Gets the <see cref='System.Data.DataSet'/> to which this constraint belongs.</para>
- /// </devdoc>
- [CLSCompliant(false)]
- protected virtual DataSet _DataSet {
- get {
- return dataSet;
- }
- }
-
- /// <devdoc>
- /// <para>Sets the constraint's <see cref='System.Data.DataSet'/>.</para>
- /// </devdoc>
- protected internal void SetDataSet(DataSet dataSet) {
- this.dataSet = dataSet;
- }
- internal abstract bool IsConstraintViolated();
- public override string ToString() {
- return ConstraintName;
- }
- }
- }
|