// Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License, version 2.0, as
// published by the Free Software Foundation.
//
// This program is also distributed with certain software (including
// but not limited to OpenSSL) that is licensed under separate terms,
// as designated in a particular file or component or in included license
// documentation.  The authors of MySQL hereby grant you an
// additional permission to link the program and your derivative works
// with the separately licensed software that they have included with
// MySQL.
//
// Without limiting anything contained in the foregoing, this file,
// which is part of MySQL Connector/NET, is also subject to the
// Universal FOSS Exception, version 1.0, a copy of which can be found at
// http://oss.oracle.com/licenses/universal-foss-exception.
//
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License, version 2.0, for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA


//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:2.0.50727.4900
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

[assembly: global::System.Data.Entity.Core.Objects.DataClasses.EdmSchemaAttribute()]
[assembly: global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipAttribute("Store", "TableOrViewColumn", "Parent", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.One, typeof(Store.TableOrView), "Column", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Store.Column))]
[assembly: global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipAttribute("Store", "TableOrViewConstraint", "Parent", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.One, typeof(Store.TableOrView), "Constraint", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Store.Constraint))]
[assembly: global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipAttribute("Store", "TableOrViewConstraintColumn", "Constraint", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Store.TableOrViewColumnConstraint), "Column", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Store.Column))]
[assembly: global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipAttribute("Store", "ConstraintForeignKey", "Constraint", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.One, typeof(Store.ForeignKeyConstraint), "ForeignKey", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Store.ForeignKey))]
[assembly: global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipAttribute("Store", "ToForeignKeyColumn", "ForeignKey", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Store.ForeignKey), "Column", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.One, typeof(Store.Column))]
[assembly: global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipAttribute("Store", "FromForeignKeyColumn", "ForeignKey", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Store.ForeignKey), "Column", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.One, typeof(Store.Column))]
[assembly: global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipAttribute("Store", "RoutineParameter", "Routine", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.One, typeof(Store.Routine), "Parameter", global::System.Data.Entity.Core.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Store.Parameter))]

// Original file name: SchemaInformation.cs
// Generation date: 2/11/2009 2:18:33 PM
namespace Store
{

  /// <summary>
  /// There are no comments for SchemaInformation in the schema.
  /// </summary>
  public partial class SchemaInformation : global::System.Data.Entity.Core.Objects.ObjectContext
  {
    /// <summary>
    /// Initializes a new SchemaInformation object using the connection string found in the 'SchemaInformation' section of the application configuration file.
    /// </summary>
    public SchemaInformation() :
      base("name=SchemaInformation", "SchemaInformation")
    {
      this.OnContextCreated();
    }
    /// <summary>
    /// Initialize a new SchemaInformation object.
    /// </summary>
    public SchemaInformation(string connectionString) :
      base(connectionString, "SchemaInformation")
    {
      this.OnContextCreated();
    }
    /// <summary>
    /// Initialize a new SchemaInformation object.
    /// </summary>
    public SchemaInformation(global::System.Data.Entity.Core.EntityClient.EntityConnection connection)
      : base(connection, "SchemaInformation")
    {
      this.OnContextCreated();
    }
    partial void OnContextCreated();
    /// <summary>
    /// There are no comments for Tables in the schema.
    /// </summary>
    public global::System.Data.Entity.Core.Objects.ObjectQuery<Table> Tables
    {
      get
      {
        if ((this._Tables == null))
        {
          this._Tables = base.CreateQuery<Table>("[Tables]");
        }
        return this._Tables;
      }
    }

    private global::System.Data.Entity.Core.Objects.ObjectQuery<Table> _Tables;

    /// <summary>
    /// There are no comments for TableColumns in the schema.
    /// </summary>
    public global::System.Data.Entity.Core.Objects.ObjectQuery<Column> TableColumns
    {
      get
      {
        if ((this._TableColumns == null))
        {
          this._TableColumns = base.CreateQuery<Column>("[TableColumns]");
        }
        return this._TableColumns;
      }
    }

    private global::System.Data.Entity.Core.Objects.ObjectQuery<Column> _TableColumns;

    /// <summary>
    /// There are no comments for TableConstraints in the schema.
    /// </summary>
    public global::System.Data.Entity.Core.Objects.ObjectQuery<Constraint> TableConstraints
    {
      get
      {
        if ((this._TableConstraints == null))
        {
          this._TableConstraints = base.CreateQuery<Constraint>("[TableConstraints]");
        }
        return this._TableConstraints;
      }
    }

    private global::System.Data.Entity.Core.Objects.ObjectQuery<Constraint> _TableConstraints;

    /// <summary>
    /// There are no comments for TableForeignKeys in the schema.
    /// </summary>
    public global::System.Data.Entity.Core.Objects.ObjectQuery<ForeignKey> TableForeignKeys
    {
      get
      {
        if ((this._TableForeignKeys == null))
        {
          this._TableForeignKeys = base.CreateQuery<ForeignKey>("[TableForeignKeys]");
        }
        return this._TableForeignKeys;
      }
    }

    private global::System.Data.Entity.Core.Objects.ObjectQuery<ForeignKey> _TableForeignKeys;

    /// <summary>
    /// There are no comments for Views in the schema.
    /// </summary>
    public global::System.Data.Entity.Core.Objects.ObjectQuery<View> Views
    {
      get
      {
        if ((this._Views == null))
        {
          this._Views = base.CreateQuery<View>("[Views]");
        }
        return this._Views;
      }
    }

    private global::System.Data.Entity.Core.Objects.ObjectQuery<View> _Views;
    /// <summary>
    /// There are no comments for ViewColumns in the schema.
    /// </summary>
    public global::System.Data.Entity.Core.Objects.ObjectQuery<Column> ViewColumns
    {
      get
      {
        if ((this._ViewColumns == null))
        {
          this._ViewColumns = base.CreateQuery<Column>("[ViewColumns]");
        }
        return this._ViewColumns;
      }
    }

    private global::System.Data.Entity.Core.Objects.ObjectQuery<Column> _ViewColumns;
    /// <summary>
    /// There are no comments for ViewConstraints in the schema.
    /// </summary>
    public global::System.Data.Entity.Core.Objects.ObjectQuery<Constraint> ViewConstraints
    {
      get
      {
        if ((this._ViewConstraints == null))
        {
          this._ViewConstraints = base.CreateQuery<Constraint>("[ViewConstraints]");
        }
        return this._ViewConstraints;
      }
    }

    private global::System.Data.Entity.Core.Objects.ObjectQuery<Constraint> _ViewConstraints;
    /// <summary>
    /// There are no comments for ViewForeignKeys in the schema.
    /// </summary>
    public global::System.Data.Entity.Core.Objects.ObjectQuery<ForeignKey> ViewForeignKeys
    {
      get
      {
        if ((this._ViewForeignKeys == null))
        {
          this._ViewForeignKeys = base.CreateQuery<ForeignKey>("[ViewForeignKeys]");
        }
        return this._ViewForeignKeys;
      }
    }

    private global::System.Data.Entity.Core.Objects.ObjectQuery<ForeignKey> _ViewForeignKeys;
    /// <summary>
    /// There are no comments for Functions in the schema.
    /// </summary>
    public global::System.Data.Entity.Core.Objects.ObjectQuery<Function> Functions
    {
      get
      {
        if ((this._Functions == null))
        {
          this._Functions = base.CreateQuery<Function>("[Functions]");
        }
        return this._Functions;
      }
    }

    private global::System.Data.Entity.Core.Objects.ObjectQuery<Function> _Functions;
    /// <summary>
    /// There are no comments for FunctionParameters in the schema.
    /// </summary>
    public global::System.Data.Entity.Core.Objects.ObjectQuery<Parameter> FunctionParameters
    {
      get
      {
        if ((this._FunctionParameters == null))
        {
          this._FunctionParameters = base.CreateQuery<Parameter>("[FunctionParameters]");
        }
        return this._FunctionParameters;
      }
    }

    private global::System.Data.Entity.Core.Objects.ObjectQuery<Parameter> _FunctionParameters;
    /// <summary>
    /// There are no comments for Procedures in the schema.
    /// </summary>
    public global::System.Data.Entity.Core.Objects.ObjectQuery<Procedure> Procedures
    {
      get
      {
        if ((this._Procedures == null))
        {
          this._Procedures = base.CreateQuery<Procedure>("[Procedures]");
        }
        return this._Procedures;
      }
    }

    private global::System.Data.Entity.Core.Objects.ObjectQuery<Procedure> _Procedures;
    /// <summary>
    /// There are no comments for ProcedureParameters in the schema.
    /// </summary>
    public global::System.Data.Entity.Core.Objects.ObjectQuery<Parameter> ProcedureParameters
    {
      get
      {
        if ((this._ProcedureParameters == null))
        {
          this._ProcedureParameters = base.CreateQuery<Parameter>("[ProcedureParameters]");
        }
        return this._ProcedureParameters;
      }
    }

    private global::System.Data.Entity.Core.Objects.ObjectQuery<Parameter> _ProcedureParameters;
    /// <summary>
    /// There are no comments for Tables in the schema.
    /// </summary>
    public void AddToTables(Table table)
    {
      base.AddObject("Tables", table);
    }

    /// <summary>
    /// There are no comments for TableColumns in the schema.
    /// </summary>
    public void AddToTableColumns(Column column)
    {
      base.AddObject("TableColumns", column);
    }

    /// <summary>
    /// There are no comments for TableConstraints in the schema.
    /// </summary>
    public void AddToTableConstraints(Constraint constraint)
    {
      base.AddObject("TableConstraints", constraint);
    }

    /// <summary>
    /// There are no comments for TableForeignKeys in the schema.
    /// </summary>
    public void AddToTableForeignKeys(ForeignKey foreignKey)
    {
      base.AddObject("TableForeignKeys", foreignKey);
    }

    /// <summary>
    /// There are no comments for Views in the schema.
    /// </summary>
    public void AddToViews(View view)
    {
      base.AddObject("Views", view);
    }

    /// <summary>
    /// There are no comments for ViewColumns in the schema.
    /// </summary>
    public void AddToViewColumns(Column column)
    {
      base.AddObject("ViewColumns", column);
    }

    /// <summary>
    /// There are no comments for ViewConstraints in the schema.
    /// </summary>
    public void AddToViewConstraints(Constraint constraint)
    {
      base.AddObject("ViewConstraints", constraint);
    }

    /// <summary>
    /// There are no comments for ViewForeignKeys in the schema.
    /// </summary>
    public void AddToViewForeignKeys(ForeignKey foreignKey)
    {
      base.AddObject("ViewForeignKeys", foreignKey);
    }

    /// <summary>
    /// There are no comments for Functions in the schema.
    /// </summary>
    public void AddToFunctions(Function function)
    {
      base.AddObject("Functions", function);
    }

    /// <summary>
    /// There are no comments for FunctionParameters in the schema.
    /// </summary>
    public void AddToFunctionParameters(Parameter parameter)
    {
      base.AddObject("FunctionParameters", parameter);
    }
    /// <summary>
    /// There are no comments for Procedures in the schema.
    /// </summary>
    public void AddToProcedures(Procedure procedure)
    {
      base.AddObject("Procedures", procedure);
    }
    /// <summary>
    /// There are no comments for ProcedureParameters in the schema.
    /// </summary>
    public void AddToProcedureParameters(Parameter parameter)
    {
      base.AddObject("ProcedureParameters", parameter);
    }
  }
  /// <summary>
  /// There are no comments for ComplexType Store.TypeSpecification in the schema.
  /// </summary>
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmComplexTypeAttribute(NamespaceName = "Store", Name = "TypeSpecification")]
  public partial class TypeSpecification : global::System.Data.Entity.Core.Objects.DataClasses.ComplexObject
  {
    /// <summary>
    /// Create a new TypeSpecification object.
    /// </summary>
    /// <param name="typeName">Initial value of TypeName.</param>
    /// <param name="collation">Initial value of Collation.</param>
    /// <param name="characterSet">Initial value of CharacterSet.</param>
    /// <param name="isMultiSet">Initial value of IsMultiSet.</param>
    public static TypeSpecification CreateTypeSpecification(string typeName, Collation collation, CharacterSet characterSet, bool isMultiSet)
    {
      TypeSpecification typeSpecification = new TypeSpecification();
      typeSpecification.TypeName = typeName;
      typeSpecification.Collation = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.VerifyComplexObjectIsNotNull(collation, "Collation");
      typeSpecification.CharacterSet = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.VerifyComplexObjectIsNotNull(characterSet, "CharacterSet");
      typeSpecification.IsMultiSet = isMultiSet;
      return typeSpecification;
    }
    /// <summary>
    /// There are no comments for Property TypeName in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string TypeName
    {
      get
      {
        return this._TypeName;
      }
      set
      {
        this.OnTypeNameChanging(value);
        this.ReportPropertyChanging("TypeName");
        this._TypeName = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("TypeName");
        this.OnTypeNameChanged();
      }
    }
    private string _TypeName;
    partial void OnTypeNameChanging(string value);
    partial void OnTypeNameChanged();
    /// <summary>
    /// There are no comments for Property MaxLength in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Nullable<int> MaxLength
    {
      get
      {
        return this._MaxLength;
      }
      set
      {
        this.OnMaxLengthChanging(value);
        this.ReportPropertyChanging("MaxLength");
        this._MaxLength = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("MaxLength");
        this.OnMaxLengthChanged();
      }
    }
    private global::System.Nullable<int> _MaxLength;
    partial void OnMaxLengthChanging(global::System.Nullable<int> value);
    partial void OnMaxLengthChanged();
    /// <summary>
    /// There are no comments for Property Precision in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Nullable<int> Precision
    {
      get
      {
        return this._Precision;
      }
      set
      {
        this.OnPrecisionChanging(value);
        this.ReportPropertyChanging("Precision");
        this._Precision = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("Precision");
        this.OnPrecisionChanged();
      }
    }
    private global::System.Nullable<int> _Precision;
    partial void OnPrecisionChanging(global::System.Nullable<int> value);
    partial void OnPrecisionChanged();
    /// <summary>
    /// There are no comments for Property DateTimePrecision in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Nullable<int> DateTimePrecision
    {
      get
      {
        return this._DateTimePrecision;
      }
      set
      {
        this.OnDateTimePrecisionChanging(value);
        this.ReportPropertyChanging("DateTimePrecision");
        this._DateTimePrecision = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("DateTimePrecision");
        this.OnDateTimePrecisionChanged();
      }
    }
    private global::System.Nullable<int> _DateTimePrecision;
    partial void OnDateTimePrecisionChanging(global::System.Nullable<int> value);
    partial void OnDateTimePrecisionChanged();
    /// <summary>
    /// There are no comments for Property Scale in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Nullable<int> Scale
    {
      get
      {
        return this._Scale;
      }
      set
      {
        this.OnScaleChanging(value);
        this.ReportPropertyChanging("Scale");
        this._Scale = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("Scale");
        this.OnScaleChanged();
      }
    }
    private global::System.Nullable<int> _Scale;
    partial void OnScaleChanging(global::System.Nullable<int> value);
    partial void OnScaleChanged();
    /// <summary>
    /// There are no comments for Property Collation in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmComplexPropertyAttribute()]
    [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
    [global::System.Xml.Serialization.XmlElement(IsNullable = true)]
    [global::System.Xml.Serialization.SoapElement(IsNullable = true)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public Collation Collation
    {
      get
      {
        this._Collation = this.GetValidValue(this._Collation, "Collation", false, this._CollationInitialized);
        this._CollationInitialized = true;
        return this._Collation;
      }
      set
      {
        this.OnCollationChanging(value);
        this.ReportPropertyChanging("Collation");
        this._Collation = this.SetValidValue(this._Collation, value, "Collation");
        this._CollationInitialized = true;
        this.ReportPropertyChanged("Collation");
        this.OnCollationChanged();
      }
    }
    private Collation _Collation;
    private bool _CollationInitialized;
    partial void OnCollationChanging(Collation value);
    partial void OnCollationChanged();
    /// <summary>
    /// There are no comments for Property CharacterSet in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmComplexPropertyAttribute()]
    [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
    [global::System.Xml.Serialization.XmlElement(IsNullable = true)]
    [global::System.Xml.Serialization.SoapElement(IsNullable = true)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public CharacterSet CharacterSet
    {
      get
      {
        this._CharacterSet = this.GetValidValue(this._CharacterSet, "CharacterSet", false, this._CharacterSetInitialized);
        this._CharacterSetInitialized = true;
        return this._CharacterSet;
      }
      set
      {
        this.OnCharacterSetChanging(value);
        this.ReportPropertyChanging("CharacterSet");
        this._CharacterSet = this.SetValidValue(this._CharacterSet, value, "CharacterSet");
        this._CharacterSetInitialized = true;
        this.ReportPropertyChanged("CharacterSet");
        this.OnCharacterSetChanged();
      }
    }
    private CharacterSet _CharacterSet;
    private bool _CharacterSetInitialized;
    partial void OnCharacterSetChanging(CharacterSet value);
    partial void OnCharacterSetChanged();
    /// <summary>
    /// There are no comments for Property IsMultiSet in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public bool IsMultiSet
    {
      get
      {
        return this._IsMultiSet;
      }
      set
      {
        this.OnIsMultiSetChanging(value);
        this.ReportPropertyChanging("IsMultiSet");
        this._IsMultiSet = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("IsMultiSet");
        this.OnIsMultiSetChanged();
      }
    }
    private bool _IsMultiSet;
    partial void OnIsMultiSetChanging(bool value);
    partial void OnIsMultiSetChanged();
  }
  /// <summary>
  /// There are no comments for ComplexType Store.Collation in the schema.
  /// </summary>
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmComplexTypeAttribute(NamespaceName = "Store", Name = "Collation")]
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  public partial class Collation : global::System.Data.Entity.Core.Objects.DataClasses.ComplexObject
  {
    /// <summary>
    /// There are no comments for Property CatalogName in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string CatalogName
    {
      get
      {
        return this._CatalogName;
      }
      set
      {
        this.OnCatalogNameChanging(value);
        this.ReportPropertyChanging("CatalogName");
        this._CatalogName = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("CatalogName");
        this.OnCatalogNameChanged();
      }
    }
    private string _CatalogName;
    partial void OnCatalogNameChanging(string value);
    partial void OnCatalogNameChanged();
    /// <summary>
    /// There are no comments for Property SchemaName in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string SchemaName
    {
      get
      {
        return this._SchemaName;
      }
      set
      {
        this.OnSchemaNameChanging(value);
        this.ReportPropertyChanging("SchemaName");
        this._SchemaName = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("SchemaName");
        this.OnSchemaNameChanged();
      }
    }
    private string _SchemaName;
    partial void OnSchemaNameChanging(string value);
    partial void OnSchemaNameChanged();
    /// <summary>
    /// There are no comments for Property Name in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Name
    {
      get
      {
        return this._Name;
      }
      set
      {
        this.OnNameChanging(value);
        this.ReportPropertyChanging("Name");
        this._Name = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("Name");
        this.OnNameChanged();
      }
    }
    private string _Name;
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
  }
  /// <summary>
  /// There are no comments for ComplexType Store.CharacterSet in the schema.
  /// </summary>
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmComplexTypeAttribute(NamespaceName = "Store", Name = "CharacterSet")]
  public partial class CharacterSet : global::System.Data.Entity.Core.Objects.DataClasses.ComplexObject
  {
    /// <summary>
    /// There are no comments for Property CatalogName in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string CatalogName
    {
      get
      {
        return this._CatalogName;
      }
      set
      {
        this.OnCatalogNameChanging(value);
        this.ReportPropertyChanging("CatalogName");
        this._CatalogName = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("CatalogName");
        this.OnCatalogNameChanged();
      }
    }
    private string _CatalogName;
    partial void OnCatalogNameChanging(string value);
    partial void OnCatalogNameChanged();
    /// <summary>
    /// There are no comments for Property SchemaName in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string SchemaName
    {
      get
      {
        return this._SchemaName;
      }
      set
      {
        this.OnSchemaNameChanging(value);
        this.ReportPropertyChanging("SchemaName");
        this._SchemaName = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("SchemaName");
        this.OnSchemaNameChanged();
      }
    }
    private string _SchemaName;
    partial void OnSchemaNameChanging(string value);
    partial void OnSchemaNameChanged();
    /// <summary>
    /// There are no comments for Property Name in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Name
    {
      get
      {
        return this._Name;
      }
      set
      {
        this.OnNameChanging(value);
        this.ReportPropertyChanging("Name");
        this._Name = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("Name");
        this.OnNameChanged();
      }
    }
    private string _Name;
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
  }
  /// <summary>
  /// There are no comments for Store.TableOrView in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  [global::System.Runtime.Serialization.KnownTypeAttribute(typeof(global::Store.Table))]
  [global::System.Runtime.Serialization.KnownTypeAttribute(typeof(global::Store.View))]
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "TableOrView")]
  public abstract partial class TableOrView : global::System.Data.Entity.Core.Objects.DataClasses.EntityObject
  {
    /// <summary>
    /// There are no comments for Property Id in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(EntityKeyProperty = true, IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Id
    {
      get
      {
        return this._Id;
      }
      set
      {
        this.OnIdChanging(value);
        this.ReportPropertyChanging("Id");
        this._Id = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("Id");
        this.OnIdChanged();
      }
    }
    private string _Id;
    partial void OnIdChanging(string value);
    partial void OnIdChanged();
    /// <summary>
    /// There are no comments for Property Name in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Name
    {
      get
      {
        return this._Name;
      }
      set
      {
        this.OnNameChanging(value);
        this.ReportPropertyChanging("Name");
        this._Name = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("Name");
        this.OnNameChanged();
      }
    }
    private string _Name;
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    /// <summary>
    /// There are no comments for Property CatalogName in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string CatalogName
    {
      get
      {
        return this._CatalogName;
      }
      set
      {
        this.OnCatalogNameChanging(value);
        this.ReportPropertyChanging("CatalogName");
        this._CatalogName = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("CatalogName");
        this.OnCatalogNameChanged();
      }
    }
    private string _CatalogName;
    partial void OnCatalogNameChanging(string value);
    partial void OnCatalogNameChanged();
    /// <summary>
    /// There are no comments for Property SchemaName in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string SchemaName
    {
      get
      {
        return this._SchemaName;
      }
      set
      {
        this.OnSchemaNameChanging(value);
        this.ReportPropertyChanging("SchemaName");
        this._SchemaName = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("SchemaName");
        this.OnSchemaNameChanged();
      }
    }
    private string _SchemaName;
    partial void OnSchemaNameChanging(string value);
    partial void OnSchemaNameChanged();
    /// <summary>
    /// There are no comments for Columns in the schema.
    /// </summary>
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "TableOrViewColumn", "Column")]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityCollection<Column> Columns
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedCollection<Column>("Store.TableOrViewColumn", "Column");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedCollection<Column>("Store.TableOrViewColumn", "Column", value);
        }
      }
    }
    /// <summary>
    /// There are no comments for Constraints in the schema.
    /// </summary>
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "TableOrViewConstraint", "Constraint")]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityCollection<Constraint> Constraints
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedCollection<Constraint>("Store.TableOrViewConstraint", "Constraint");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedCollection<Constraint>("Store.TableOrViewConstraint", "Constraint", value);
        }
      }
    }
  }
  /// <summary>
  /// There are no comments for Store.Table in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "Table")]
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  public partial class Table : TableOrView
  {
    /// <summary>
    /// Create a new Table object.
    /// </summary>
    /// <param name="id">Initial value of Id.</param>
    /// <param name="name">Initial value of Name.</param>
    public static Table CreateTable(string id, string name)
    {
      Table table = new Table();
      table.Id = id;
      table.Name = name;
      return table;
    }
  }
  /// <summary>
  /// There are no comments for Store.Column in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "Column")]
  public partial class Column : global::System.Data.Entity.Core.Objects.DataClasses.EntityObject
  {
    /// <summary>
    /// Create a new Column object.
    /// </summary>
    /// <param name="id">Initial value of Id.</param>
    /// <param name="name">Initial value of Name.</param>
    /// <param name="ordinal">Initial value of Ordinal.</param>
    /// <param name="isNullable">Initial value of IsNullable.</param>
    /// <param name="columnType">Initial value of ColumnType.</param>
    /// <param name="isIdentity">Initial value of IsIdentity.</param>
    /// <param name="isStoreGenerated">Initial value of IsStoreGenerated.</param>
    public static Column CreateColumn(string id, string name, int ordinal, bool isNullable, TypeSpecification columnType, bool isIdentity, bool isStoreGenerated)
    {
      Column column = new Column();
      column.Id = id;
      column.Name = name;
      column.Ordinal = ordinal;
      column.IsNullable = isNullable;
      column.ColumnType = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.VerifyComplexObjectIsNotNull(columnType, "ColumnType");
      column.IsIdentity = isIdentity;
      column.IsStoreGenerated = isStoreGenerated;
      return column;
    }
    /// <summary>
    /// There are no comments for Property Id in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(EntityKeyProperty = true, IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Id
    {
      get
      {
        return this._Id;
      }
      set
      {
        this.OnIdChanging(value);
        this.ReportPropertyChanging("Id");
        this._Id = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("Id");
        this.OnIdChanged();
      }
    }
    private string _Id;
    partial void OnIdChanging(string value);
    partial void OnIdChanged();
    /// <summary>
    /// There are no comments for Property Name in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Name
    {
      get
      {
        return this._Name;
      }
      set
      {
        this.OnNameChanging(value);
        this.ReportPropertyChanging("Name");
        this._Name = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("Name");
        this.OnNameChanged();
      }
    }
    private string _Name;
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    /// <summary>
    /// There are no comments for Property Ordinal in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public int Ordinal
    {
      get
      {
        return this._Ordinal;
      }
      set
      {
        this.OnOrdinalChanging(value);
        this.ReportPropertyChanging("Ordinal");
        this._Ordinal = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("Ordinal");
        this.OnOrdinalChanged();
      }
    }
    private int _Ordinal;
    partial void OnOrdinalChanging(int value);
    partial void OnOrdinalChanged();
    /// <summary>
    /// There are no comments for Property IsNullable in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public bool IsNullable
    {
      get
      {
        return this._IsNullable;
      }
      set
      {
        this.OnIsNullableChanging(value);
        this.ReportPropertyChanging("IsNullable");
        this._IsNullable = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("IsNullable");
        this.OnIsNullableChanged();
      }
    }
    private bool _IsNullable;
    partial void OnIsNullableChanging(bool value);
    partial void OnIsNullableChanged();
    /// <summary>
    /// There are no comments for Property ColumnType in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmComplexPropertyAttribute()]
    [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
    [global::System.Xml.Serialization.XmlElement(IsNullable = true)]
    [global::System.Xml.Serialization.SoapElement(IsNullable = true)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public TypeSpecification ColumnType
    {
      get
      {
        this._ColumnType = this.GetValidValue(this._ColumnType, "ColumnType", false, this._ColumnTypeInitialized);
        this._ColumnTypeInitialized = true;
        return this._ColumnType;
      }
      set
      {
        this.OnColumnTypeChanging(value);
        this.ReportPropertyChanging("ColumnType");
        this._ColumnType = this.SetValidValue(this._ColumnType, value, "ColumnType");
        this._ColumnTypeInitialized = true;
        this.ReportPropertyChanged("ColumnType");
        this.OnColumnTypeChanged();
      }
    }
    private TypeSpecification _ColumnType;
    private bool _ColumnTypeInitialized;
    partial void OnColumnTypeChanging(TypeSpecification value);
    partial void OnColumnTypeChanged();
    /// <summary>
    /// There are no comments for Property IsIdentity in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public bool IsIdentity
    {
      get
      {
        return this._IsIdentity;
      }
      set
      {
        this.OnIsIdentityChanging(value);
        this.ReportPropertyChanging("IsIdentity");
        this._IsIdentity = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("IsIdentity");
        this.OnIsIdentityChanged();
      }
    }
    private bool _IsIdentity;
    partial void OnIsIdentityChanging(bool value);
    partial void OnIsIdentityChanged();
    /// <summary>
    /// There are no comments for Property IsStoreGenerated in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public bool IsStoreGenerated
    {
      get
      {
        return this._IsStoreGenerated;
      }
      set
      {
        this.OnIsStoreGeneratedChanging(value);
        this.ReportPropertyChanging("IsStoreGenerated");
        this._IsStoreGenerated = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("IsStoreGenerated");
        this.OnIsStoreGeneratedChanged();
      }
    }
    private bool _IsStoreGenerated;
    partial void OnIsStoreGeneratedChanging(bool value);
    partial void OnIsStoreGeneratedChanged();
    /// <summary>
    /// There are no comments for Property Default in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Default
    {
      get
      {
        return this._Default;
      }
      set
      {
        this.OnDefaultChanging(value);
        this.ReportPropertyChanging("Default");
        this._Default = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("Default");
        this.OnDefaultChanged();
      }
    }
    private string _Default;
    partial void OnDefaultChanging(string value);
    partial void OnDefaultChanged();
    /// <summary>
    /// There are no comments for Parent in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "TableOrViewColumn", "Parent")]
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public TableOrView Parent
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<TableOrView>("Store.TableOrViewColumn", "Parent").Value;
      }
      set
      {
        ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<TableOrView>("Store.TableOrViewColumn", "Parent").Value = value;
      }
    }
    /// <summary>
    /// There are no comments for Parent in the schema.
    /// </summary>
    [global::System.ComponentModel.BrowsableAttribute(false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityReference<TableOrView> ParentReference
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<TableOrView>("Store.TableOrViewColumn", "Parent");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedReference<TableOrView>("Store.TableOrViewColumn", "Parent", value);
        }
      }
    }
    /// <summary>
    /// There are no comments for Constraints in the schema.
    /// </summary>
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "TableOrViewConstraintColumn", "Constraint")]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityCollection<TableOrViewColumnConstraint> Constraints
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedCollection<TableOrViewColumnConstraint>("Store.TableOrViewConstraintColumn", "Constraint");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedCollection<TableOrViewColumnConstraint>("Store.TableOrViewConstraintColumn", "Constraint", value);
        }
      }
    }
    /// <summary>
    /// There are no comments for ToForeignKeys in the schema.
    /// </summary>
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "ToForeignKeyColumn", "ForeignKey")]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityCollection<ForeignKey> ToForeignKeys
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedCollection<ForeignKey>("Store.ToForeignKeyColumn", "ForeignKey");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedCollection<ForeignKey>("Store.ToForeignKeyColumn", "ForeignKey", value);
        }
      }
    }
    /// <summary>
    /// There are no comments for FromForeignKeys in the schema.
    /// </summary>
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "FromForeignKeyColumn", "ForeignKey")]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityCollection<ForeignKey> FromForeignKeys
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedCollection<ForeignKey>("Store.FromForeignKeyColumn", "ForeignKey");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedCollection<ForeignKey>("Store.FromForeignKeyColumn", "ForeignKey", value);
        }
      }
    }
  }
  /// <summary>
  /// There are no comments for Store.View in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "View")]
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  public partial class View : TableOrView
  {
    /// <summary>
    /// Create a new View object.
    /// </summary>
    /// <param name="id">Initial value of Id.</param>
    /// <param name="name">Initial value of Name.</param>
    /// <param name="isUpdatable">Initial value of IsUpdatable.</param>
    public static View CreateView(string id, string name, bool isUpdatable)
    {
      View view = new View();
      view.Id = id;
      view.Name = name;
      view.IsUpdatable = isUpdatable;
      return view;
    }
    /// <summary>
    /// There are no comments for Property IsUpdatable in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public bool IsUpdatable
    {
      get
      {
        return this._IsUpdatable;
      }
      set
      {
        this.OnIsUpdatableChanging(value);
        this.ReportPropertyChanging("IsUpdatable");
        this._IsUpdatable = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("IsUpdatable");
        this.OnIsUpdatableChanged();
      }
    }
    private bool _IsUpdatable;
    partial void OnIsUpdatableChanging(bool value);
    partial void OnIsUpdatableChanged();
    /// <summary>
    /// There are no comments for Property ViewDefinition in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string ViewDefinition
    {
      get
      {
        return this._ViewDefinition;
      }
      set
      {
        this.OnViewDefinitionChanging(value);
        this.ReportPropertyChanging("ViewDefinition");
        this._ViewDefinition = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("ViewDefinition");
        this.OnViewDefinitionChanged();
      }
    }
    private string _ViewDefinition;
    partial void OnViewDefinitionChanging(string value);
    partial void OnViewDefinitionChanged();
  }
  /// <summary>
  /// There are no comments for Store.Routine in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  [global::System.Runtime.Serialization.KnownTypeAttribute(typeof(global::Store.Function))]
  [global::System.Runtime.Serialization.KnownTypeAttribute(typeof(global::Store.Procedure))]
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "Routine")]
  public abstract partial class Routine : global::System.Data.Entity.Core.Objects.DataClasses.EntityObject
  {
    /// <summary>
    /// There are no comments for Property Id in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(EntityKeyProperty = true, IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Id
    {
      get
      {
        return this._Id;
      }
      set
      {
        this.OnIdChanging(value);
        this.ReportPropertyChanging("Id");
        this._Id = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("Id");
        this.OnIdChanged();
      }
    }
    private string _Id;
    partial void OnIdChanging(string value);
    partial void OnIdChanged();
    /// <summary>
    /// There are no comments for Property CatalogName in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string CatalogName
    {
      get
      {
        return this._CatalogName;
      }
      set
      {
        this.OnCatalogNameChanging(value);
        this.ReportPropertyChanging("CatalogName");
        this._CatalogName = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("CatalogName");
        this.OnCatalogNameChanged();
      }
    }
    private string _CatalogName;
    partial void OnCatalogNameChanging(string value);
    partial void OnCatalogNameChanged();
    /// <summary>
    /// There are no comments for Property SchemaName in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string SchemaName
    {
      get
      {
        return this._SchemaName;
      }
      set
      {
        this.OnSchemaNameChanging(value);
        this.ReportPropertyChanging("SchemaName");
        this._SchemaName = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("SchemaName");
        this.OnSchemaNameChanged();
      }
    }
    private string _SchemaName;
    partial void OnSchemaNameChanging(string value);
    partial void OnSchemaNameChanged();
    /// <summary>
    /// There are no comments for Property Name in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Name
    {
      get
      {
        return this._Name;
      }
      set
      {
        this.OnNameChanging(value);
        this.ReportPropertyChanging("Name");
        this._Name = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("Name");
        this.OnNameChanged();
      }
    }
    private string _Name;
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    /// <summary>
    /// There are no comments for Parameters in the schema.
    /// </summary>
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "RoutineParameter", "Parameter")]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityCollection<Parameter> Parameters
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedCollection<Parameter>("Store.RoutineParameter", "Parameter");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedCollection<Parameter>("Store.RoutineParameter", "Parameter", value);
        }
      }
    }
  }
  /// <summary>
  /// There are no comments for Store.Parameter in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "Parameter")]
  public partial class Parameter : global::System.Data.Entity.Core.Objects.DataClasses.EntityObject
  {
    /// <summary>
    /// Create a new Parameter object.
    /// </summary>
    /// <param name="id">Initial value of Id.</param>
    /// <param name="name">Initial value of Name.</param>
    /// <param name="ordinal">Initial value of Ordinal.</param>
    /// <param name="parameterType">Initial value of ParameterType.</param>
    public static Parameter CreateParameter(string id, string name, int ordinal, TypeSpecification parameterType)
    {
      Parameter parameter = new Parameter();
      parameter.Id = id;
      parameter.Name = name;
      parameter.Ordinal = ordinal;
      parameter.ParameterType = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.VerifyComplexObjectIsNotNull(parameterType, "ParameterType");
      return parameter;
    }
    /// <summary>
    /// There are no comments for Property Id in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(EntityKeyProperty = true, IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Id
    {
      get
      {
        return this._Id;
      }
      set
      {
        this.OnIdChanging(value);
        this.ReportPropertyChanging("Id");
        this._Id = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("Id");
        this.OnIdChanged();
      }
    }
    private string _Id;
    partial void OnIdChanging(string value);
    partial void OnIdChanged();
    /// <summary>
    /// There are no comments for Property Name in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Name
    {
      get
      {
        return this._Name;
      }
      set
      {
        this.OnNameChanging(value);
        this.ReportPropertyChanging("Name");
        this._Name = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("Name");
        this.OnNameChanged();
      }
    }
    private string _Name;
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    /// <summary>
    /// There are no comments for Property Ordinal in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public int Ordinal
    {
      get
      {
        return this._Ordinal;
      }
      set
      {
        this.OnOrdinalChanging(value);
        this.ReportPropertyChanging("Ordinal");
        this._Ordinal = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("Ordinal");
        this.OnOrdinalChanged();
      }
    }
    private int _Ordinal;
    partial void OnOrdinalChanging(int value);
    partial void OnOrdinalChanged();
    /// <summary>
    /// There are no comments for Property ParameterType in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmComplexPropertyAttribute()]
    [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
    [global::System.Xml.Serialization.XmlElement(IsNullable = true)]
    [global::System.Xml.Serialization.SoapElement(IsNullable = true)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public TypeSpecification ParameterType
    {
      get
      {
        this._ParameterType = this.GetValidValue(this._ParameterType, "ParameterType", false, this._ParameterTypeInitialized);
        this._ParameterTypeInitialized = true;
        return this._ParameterType;
      }
      set
      {
        this.OnParameterTypeChanging(value);
        this.ReportPropertyChanging("ParameterType");
        this._ParameterType = this.SetValidValue(this._ParameterType, value, "ParameterType");
        this._ParameterTypeInitialized = true;
        this.ReportPropertyChanged("ParameterType");
        this.OnParameterTypeChanged();
      }
    }
    private TypeSpecification _ParameterType;
    private bool _ParameterTypeInitialized;
    partial void OnParameterTypeChanging(TypeSpecification value);
    partial void OnParameterTypeChanged();
    /// <summary>
    /// There are no comments for Property Mode in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Mode
    {
      get
      {
        return this._Mode;
      }
      set
      {
        this.OnModeChanging(value);
        this.ReportPropertyChanging("Mode");
        this._Mode = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("Mode");
        this.OnModeChanged();
      }
    }
    private string _Mode;
    partial void OnModeChanging(string value);
    partial void OnModeChanged();
    /// <summary>
    /// There are no comments for Property Default in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Default
    {
      get
      {
        return this._Default;
      }
      set
      {
        this.OnDefaultChanging(value);
        this.ReportPropertyChanging("Default");
        this._Default = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("Default");
        this.OnDefaultChanged();
      }
    }
    private string _Default;
    partial void OnDefaultChanging(string value);
    partial void OnDefaultChanged();
    /// <summary>
    /// There are no comments for Routine in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "RoutineParameter", "Routine")]
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public Routine Routine
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Routine>("Store.RoutineParameter", "Routine").Value;
      }
      set
      {
        ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Routine>("Store.RoutineParameter", "Routine").Value = value;
      }
    }
    /// <summary>
    /// There are no comments for Routine in the schema.
    /// </summary>
    [global::System.ComponentModel.BrowsableAttribute(false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityReference<Routine> RoutineReference
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Routine>("Store.RoutineParameter", "Routine");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedReference<Routine>("Store.RoutineParameter", "Routine", value);
        }
      }
    }
  }
  /// <summary>
  /// There are no comments for Store.Function in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "Function")]
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  [global::System.Runtime.Serialization.KnownTypeAttribute(typeof(global::Store.ScalarFunction))]
  public abstract partial class Function : Routine
  {
    /// <summary>
    /// There are no comments for Property IsBuiltIn in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Nullable<bool> IsBuiltIn
    {
      get
      {
        return this._IsBuiltIn;
      }
      set
      {
        this.OnIsBuiltInChanging(value);
        this.ReportPropertyChanging("IsBuiltIn");
        this._IsBuiltIn = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("IsBuiltIn");
        this.OnIsBuiltInChanged();
      }
    }
    private global::System.Nullable<bool> _IsBuiltIn;
    partial void OnIsBuiltInChanging(global::System.Nullable<bool> value);
    partial void OnIsBuiltInChanged();
    /// <summary>
    /// There are no comments for Property IsNiladic in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Nullable<bool> IsNiladic
    {
      get
      {
        return this._IsNiladic;
      }
      set
      {
        this.OnIsNiladicChanging(value);
        this.ReportPropertyChanging("IsNiladic");
        this._IsNiladic = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("IsNiladic");
        this.OnIsNiladicChanged();
      }
    }
    private global::System.Nullable<bool> _IsNiladic;
    partial void OnIsNiladicChanging(global::System.Nullable<bool> value);
    partial void OnIsNiladicChanged();
  }
  /// <summary>
  /// There are no comments for Store.ScalarFunction in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "ScalarFunction")]
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  public partial class ScalarFunction : Function
  {
    /// <summary>
    /// Create a new ScalarFunction object.
    /// </summary>
    /// <param name="id">Initial value of Id.</param>
    /// <param name="name">Initial value of Name.</param>
    /// <param name="returnType">Initial value of ReturnType.</param>
    public static ScalarFunction CreateScalarFunction(string id, string name, TypeSpecification returnType)
    {
      ScalarFunction scalarFunction = new ScalarFunction();
      scalarFunction.Id = id;
      scalarFunction.Name = name;
      scalarFunction.ReturnType = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.VerifyComplexObjectIsNotNull(returnType, "ReturnType");
      return scalarFunction;
    }
    /// <summary>
    /// There are no comments for Property ReturnType in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmComplexPropertyAttribute()]
    [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)]
    [global::System.Xml.Serialization.XmlElement(IsNullable = true)]
    [global::System.Xml.Serialization.SoapElement(IsNullable = true)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public TypeSpecification ReturnType
    {
      get
      {
        this._ReturnType = this.GetValidValue(this._ReturnType, "ReturnType", false, this._ReturnTypeInitialized);
        this._ReturnTypeInitialized = true;
        return this._ReturnType;
      }
      set
      {
        this.OnReturnTypeChanging(value);
        this.ReportPropertyChanging("ReturnType");
        this._ReturnType = this.SetValidValue(this._ReturnType, value, "ReturnType");
        this._ReturnTypeInitialized = true;
        this.ReportPropertyChanged("ReturnType");
        this.OnReturnTypeChanged();
      }
    }
    private TypeSpecification _ReturnType;
    private bool _ReturnTypeInitialized;
    partial void OnReturnTypeChanging(TypeSpecification value);
    partial void OnReturnTypeChanged();
    /// <summary>
    /// There are no comments for Property IsAggregate in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Nullable<bool> IsAggregate
    {
      get
      {
        return this._IsAggregate;
      }
      set
      {
        this.OnIsAggregateChanging(value);
        this.ReportPropertyChanging("IsAggregate");
        this._IsAggregate = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("IsAggregate");
        this.OnIsAggregateChanged();
      }
    }
    private global::System.Nullable<bool> _IsAggregate;
    partial void OnIsAggregateChanging(global::System.Nullable<bool> value);
    partial void OnIsAggregateChanged();
  }
  /// <summary>
  /// There are no comments for Store.Procedure in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "Procedure")]
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  public partial class Procedure : Routine
  {
    /// <summary>
    /// Create a new Procedure object.
    /// </summary>
    /// <param name="id">Initial value of Id.</param>
    /// <param name="name">Initial value of Name.</param>
    public static Procedure CreateProcedure(string id, string name)
    {
      Procedure procedure = new Procedure();
      procedure.Id = id;
      procedure.Name = name;
      return procedure;
    }
  }
  /// <summary>
  /// There are no comments for Store.Constraint in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  [global::System.Runtime.Serialization.KnownTypeAttribute(typeof(global::Store.TableOrViewColumnConstraint))]
  [global::System.Runtime.Serialization.KnownTypeAttribute(typeof(global::Store.ForeignKeyConstraint))]
  [global::System.Runtime.Serialization.KnownTypeAttribute(typeof(global::Store.CheckConstraint))]
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "Constraint")]
  public abstract partial class Constraint : global::System.Data.Entity.Core.Objects.DataClasses.EntityObject
  {
    /// <summary>
    /// There are no comments for Property Id in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(EntityKeyProperty = true, IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Id
    {
      get
      {
        return this._Id;
      }
      set
      {
        this.OnIdChanging(value);
        this.ReportPropertyChanging("Id");
        this._Id = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("Id");
        this.OnIdChanged();
      }
    }
    private string _Id;
    partial void OnIdChanging(string value);
    partial void OnIdChanged();
    /// <summary>
    /// There are no comments for Property Name in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Name
    {
      get
      {
        return this._Name;
      }
      set
      {
        this.OnNameChanging(value);
        this.ReportPropertyChanging("Name");
        this._Name = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("Name");
        this.OnNameChanged();
      }
    }
    private string _Name;
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    /// <summary>
    /// There are no comments for Property IsDeferrable in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public bool IsDeferrable
    {
      get
      {
        return this._IsDeferrable;
      }
      set
      {
        this.OnIsDeferrableChanging(value);
        this.ReportPropertyChanging("IsDeferrable");
        this._IsDeferrable = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("IsDeferrable");
        this.OnIsDeferrableChanged();
      }
    }
    private bool _IsDeferrable;
    partial void OnIsDeferrableChanging(bool value);
    partial void OnIsDeferrableChanged();
    /// <summary>
    /// There are no comments for Property IsInitiallyDeferred in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public bool IsInitiallyDeferred
    {
      get
      {
        return this._IsInitiallyDeferred;
      }
      set
      {
        this.OnIsInitiallyDeferredChanging(value);
        this.ReportPropertyChanging("IsInitiallyDeferred");
        this._IsInitiallyDeferred = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("IsInitiallyDeferred");
        this.OnIsInitiallyDeferredChanged();
      }
    }
    private bool _IsInitiallyDeferred;
    partial void OnIsInitiallyDeferredChanging(bool value);
    partial void OnIsInitiallyDeferredChanged();
    /// <summary>
    /// There are no comments for Parent in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "TableOrViewConstraint", "Parent")]
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public TableOrView Parent
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<TableOrView>("Store.TableOrViewConstraint", "Parent").Value;
      }
      set
      {
        ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<TableOrView>("Store.TableOrViewConstraint", "Parent").Value = value;
      }
    }
    /// <summary>
    /// There are no comments for Parent in the schema.
    /// </summary>
    [global::System.ComponentModel.BrowsableAttribute(false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityReference<TableOrView> ParentReference
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<TableOrView>("Store.TableOrViewConstraint", "Parent");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedReference<TableOrView>("Store.TableOrViewConstraint", "Parent", value);
        }
      }
    }
  }
  /// <summary>
  /// There are no comments for Store.CheckConstraint in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "CheckConstraint")]
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  public partial class CheckConstraint : Constraint
  {
    /// <summary>
    /// Create a new CheckConstraint object.
    /// </summary>
    /// <param name="id">Initial value of Id.</param>
    /// <param name="name">Initial value of Name.</param>
    /// <param name="isDeferrable">Initial value of IsDeferrable.</param>
    /// <param name="isInitiallyDeferred">Initial value of IsInitiallyDeferred.</param>
    public static CheckConstraint CreateCheckConstraint(string id, string name, bool isDeferrable, bool isInitiallyDeferred)
    {
      CheckConstraint checkConstraint = new CheckConstraint();
      checkConstraint.Id = id;
      checkConstraint.Name = name;
      checkConstraint.IsDeferrable = isDeferrable;
      checkConstraint.IsInitiallyDeferred = isInitiallyDeferred;
      return checkConstraint;
    }
    /// <summary>
    /// There are no comments for Property Expression in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Expression
    {
      get
      {
        return this._Expression;
      }
      set
      {
        this.OnExpressionChanging(value);
        this.ReportPropertyChanging("Expression");
        this._Expression = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, true);
        this.ReportPropertyChanged("Expression");
        this.OnExpressionChanged();
      }
    }
    private string _Expression;
    partial void OnExpressionChanging(string value);
    partial void OnExpressionChanged();
  }
  /// <summary>
  /// There are no comments for Store.TableOrViewColumnConstraint in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "TableOrViewColumnConstraint")]
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  [global::System.Runtime.Serialization.KnownTypeAttribute(typeof(global::Store.PrimaryKeyConstraint))]
  [global::System.Runtime.Serialization.KnownTypeAttribute(typeof(global::Store.UniqueConstraint))]
  public abstract partial class TableOrViewColumnConstraint : Constraint
  {
    /// <summary>
    /// There are no comments for Columns in the schema.
    /// </summary>
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "TableOrViewConstraintColumn", "Column")]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityCollection<Column> Columns
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedCollection<Column>("Store.TableOrViewConstraintColumn", "Column");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedCollection<Column>("Store.TableOrViewConstraintColumn", "Column", value);
        }
      }
    }
  }
  /// <summary>
  /// There are no comments for Store.PrimaryKeyConstraint in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "PrimaryKeyConstraint")]
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  public partial class PrimaryKeyConstraint : TableOrViewColumnConstraint
  {
    /// <summary>
    /// Create a new PrimaryKeyConstraint object.
    /// </summary>
    /// <param name="id">Initial value of Id.</param>
    /// <param name="name">Initial value of Name.</param>
    /// <param name="isDeferrable">Initial value of IsDeferrable.</param>
    /// <param name="isInitiallyDeferred">Initial value of IsInitiallyDeferred.</param>
    public static PrimaryKeyConstraint CreatePrimaryKeyConstraint(string id, string name, bool isDeferrable, bool isInitiallyDeferred)
    {
      PrimaryKeyConstraint primaryKeyConstraint = new PrimaryKeyConstraint();
      primaryKeyConstraint.Id = id;
      primaryKeyConstraint.Name = name;
      primaryKeyConstraint.IsDeferrable = isDeferrable;
      primaryKeyConstraint.IsInitiallyDeferred = isInitiallyDeferred;
      return primaryKeyConstraint;
    }
  }
  /// <summary>
  /// There are no comments for Store.UniqueConstraint in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "UniqueConstraint")]
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  public partial class UniqueConstraint : TableOrViewColumnConstraint
  {
    /// <summary>
    /// Create a new UniqueConstraint object.
    /// </summary>
    /// <param name="id">Initial value of Id.</param>
    /// <param name="name">Initial value of Name.</param>
    /// <param name="isDeferrable">Initial value of IsDeferrable.</param>
    /// <param name="isInitiallyDeferred">Initial value of IsInitiallyDeferred.</param>
    public static UniqueConstraint CreateUniqueConstraint(string id, string name, bool isDeferrable, bool isInitiallyDeferred)
    {
      UniqueConstraint uniqueConstraint = new UniqueConstraint();
      uniqueConstraint.Id = id;
      uniqueConstraint.Name = name;
      uniqueConstraint.IsDeferrable = isDeferrable;
      uniqueConstraint.IsInitiallyDeferred = isInitiallyDeferred;
      return uniqueConstraint;
    }
  }
  /// <summary>
  /// There are no comments for Store.ForeignKeyConstraint in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "ForeignKeyConstraint")]
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  public partial class ForeignKeyConstraint : Constraint
  {
    /// <summary>
    /// Create a new ForeignKeyConstraint object.
    /// </summary>
    /// <param name="id">Initial value of Id.</param>
    /// <param name="name">Initial value of Name.</param>
    /// <param name="isDeferrable">Initial value of IsDeferrable.</param>
    /// <param name="isInitiallyDeferred">Initial value of IsInitiallyDeferred.</param>
    /// <param name="updateRule">Initial value of UpdateRule.</param>
    /// <param name="deleteRule">Initial value of DeleteRule.</param>
    public static ForeignKeyConstraint CreateForeignKeyConstraint(string id, string name, bool isDeferrable, bool isInitiallyDeferred, string updateRule, string deleteRule)
    {
      ForeignKeyConstraint foreignKeyConstraint = new ForeignKeyConstraint();
      foreignKeyConstraint.Id = id;
      foreignKeyConstraint.Name = name;
      foreignKeyConstraint.IsDeferrable = isDeferrable;
      foreignKeyConstraint.IsInitiallyDeferred = isInitiallyDeferred;
      foreignKeyConstraint.UpdateRule = updateRule;
      foreignKeyConstraint.DeleteRule = deleteRule;
      return foreignKeyConstraint;
    }
    /// <summary>
    /// There are no comments for Property UpdateRule in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string UpdateRule
    {
      get
      {
        return this._UpdateRule;
      }
      set
      {
        this.OnUpdateRuleChanging(value);
        this.ReportPropertyChanging("UpdateRule");
        this._UpdateRule = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("UpdateRule");
        this.OnUpdateRuleChanged();
      }
    }
    private string _UpdateRule;
    partial void OnUpdateRuleChanging(string value);
    partial void OnUpdateRuleChanged();
    /// <summary>
    /// There are no comments for Property DeleteRule in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string DeleteRule
    {
      get
      {
        return this._DeleteRule;
      }
      set
      {
        this.OnDeleteRuleChanging(value);
        this.ReportPropertyChanging("DeleteRule");
        this._DeleteRule = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("DeleteRule");
        this.OnDeleteRuleChanged();
      }
    }
    private string _DeleteRule;
    partial void OnDeleteRuleChanging(string value);
    partial void OnDeleteRuleChanged();
    /// <summary>
    /// There are no comments for ForeignKeys in the schema.
    /// </summary>
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "ConstraintForeignKey", "ForeignKey")]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityCollection<ForeignKey> ForeignKeys
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedCollection<ForeignKey>("Store.ConstraintForeignKey", "ForeignKey");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedCollection<ForeignKey>("Store.ConstraintForeignKey", "ForeignKey", value);
        }
      }
    }
  }
  /// <summary>
  /// There are no comments for Store.ForeignKey in the schema.
  /// </summary>
  /// <KeyProperties>
  /// Id
  /// </KeyProperties>
  [global::System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
  [global::System.Serializable()]
  [global::System.Data.Entity.Core.Objects.DataClasses.EdmEntityTypeAttribute(NamespaceName = "Store", Name = "ForeignKey")]
  public partial class ForeignKey : global::System.Data.Entity.Core.Objects.DataClasses.EntityObject
  {
    /// <summary>
    /// Create a new ForeignKey object.
    /// </summary>
    /// <param name="id">Initial value of Id.</param>
    /// <param name="ordinal">Initial value of Ordinal.</param>
    public static ForeignKey CreateForeignKey(string id, int ordinal)
    {
      ForeignKey foreignKey = new ForeignKey();
      foreignKey.Id = id;
      foreignKey.Ordinal = ordinal;
      return foreignKey;
    }
    /// <summary>
    /// There are no comments for Property Id in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(EntityKeyProperty = true, IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public string Id
    {
      get
      {
        return this._Id;
      }
      set
      {
        this.OnIdChanging(value);
        this.ReportPropertyChanging("Id");
        this._Id = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value, false);
        this.ReportPropertyChanged("Id");
        this.OnIdChanged();
      }
    }
    private string _Id;
    partial void OnIdChanging(string value);
    partial void OnIdChanged();
    /// <summary>
    /// There are no comments for Property Ordinal in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmScalarPropertyAttribute(IsNullable = false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public int Ordinal
    {
      get
      {
        return this._Ordinal;
      }
      set
      {
        this.OnOrdinalChanging(value);
        this.ReportPropertyChanging("Ordinal");
        this._Ordinal = global::System.Data.Entity.Core.Objects.DataClasses.StructuralObject.SetValidValue(value);
        this.ReportPropertyChanged("Ordinal");
        this.OnOrdinalChanged();
      }
    }
    private int _Ordinal;
    partial void OnOrdinalChanging(int value);
    partial void OnOrdinalChanged();
    /// <summary>
    /// There are no comments for Constraint in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "ConstraintForeignKey", "Constraint")]
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public ForeignKeyConstraint Constraint
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<ForeignKeyConstraint>("Store.ConstraintForeignKey", "Constraint").Value;
      }
      set
      {
        ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<ForeignKeyConstraint>("Store.ConstraintForeignKey", "Constraint").Value = value;
      }
    }
    /// <summary>
    /// There are no comments for Constraint in the schema.
    /// </summary>
    [global::System.ComponentModel.BrowsableAttribute(false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityReference<ForeignKeyConstraint> ConstraintReference
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<ForeignKeyConstraint>("Store.ConstraintForeignKey", "Constraint");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedReference<ForeignKeyConstraint>("Store.ConstraintForeignKey", "Constraint", value);
        }
      }
    }
    /// <summary>
    /// There are no comments for FromColumn in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "FromForeignKeyColumn", "Column")]
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public Column FromColumn
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Column>("Store.FromForeignKeyColumn", "Column").Value;
      }
      set
      {
        ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Column>("Store.FromForeignKeyColumn", "Column").Value = value;
      }
    }
    /// <summary>
    /// There are no comments for FromColumn in the schema.
    /// </summary>
    [global::System.ComponentModel.BrowsableAttribute(false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityReference<Column> FromColumnReference
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Column>("Store.FromForeignKeyColumn", "Column");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedReference<Column>("Store.FromForeignKeyColumn", "Column", value);
        }
      }
    }
    /// <summary>
    /// There are no comments for ToColumn in the schema.
    /// </summary>
    [global::System.Data.Entity.Core.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Store", "ToForeignKeyColumn", "Column")]
    [global::System.Xml.Serialization.XmlIgnoreAttribute()]
    [global::System.Xml.Serialization.SoapIgnoreAttribute()]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public Column ToColumn
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Column>("Store.ToForeignKeyColumn", "Column").Value;
      }
      set
      {
        ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Column>("Store.ToForeignKeyColumn", "Column").Value = value;
      }
    }
    /// <summary>
    /// There are no comments for ToColumn in the schema.
    /// </summary>
    [global::System.ComponentModel.BrowsableAttribute(false)]
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public global::System.Data.Entity.Core.Objects.DataClasses.EntityReference<Column> ToColumnReference
    {
      get
      {
        return ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Column>("Store.ToForeignKeyColumn", "Column");
      }
      set
      {
        if ((value != null))
        {
          ((global::System.Data.Entity.Core.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedReference<Column>("Store.ToForeignKeyColumn", "Column", value);
        }
      }
    }
  }
}
