Click here to Skip to main content
15,881,248 members
Articles / Database Development / SQL Server

LinqToSQL: Query Multiple Databases in One LINQ Expression and More...

Rate me:
Please Sign up or sign in to vote.
4.11/5 (8 votes)
31 Jan 2008LGPL35 min read 85.1K   917   43  
Query multiple databases in one expression e.g. an Microsoft Access Database and an SQL Server Database
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:2.0.50727.1378
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Data;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using System.Linq.Expressions;
using System.ComponentModel;
using System;

namespace NorthwindLinqTest {
    
    [System.Data.Linq.Mapping.DatabaseAttribute(Name = "17EE25CE7E3E675B7644208412721C39_UMENTS\\VISUAL STUDIO 2008\\PROJECTS\\NORTHWINDLINQ" +
        "\\NORTHWINDLINQ\\DBML\\NORTHWIND_2007-03-29SQL.MDF")]
    public partial class NorthwindDataContext : System.Data.Linq.DataContext {

        private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();

        #region Extensibility Method Definitions
        partial void OnCreated();
        partial void InsertCategory(Category instance);
        partial void UpdateCategory(Category instance);
        partial void DeleteCategory(Category instance);
        partial void InsertCustomer(Customer instance);
        partial void UpdateCustomer(Customer instance);
        partial void DeleteCustomer(Customer instance);
        partial void InsertEmployee(Employee instance);
        partial void UpdateEmployee(Employee instance);
        partial void DeleteEmployee(Employee instance);
        partial void InsertOrderDetail(OrderDetail instance);
        partial void UpdateOrderDetail(OrderDetail instance);
        partial void DeleteOrderDetail(OrderDetail instance);
        partial void InsertOrder(Order instance);
        partial void UpdateOrder(Order instance);
        partial void DeleteOrder(Order instance);
        partial void InsertProduct(Product instance);
        partial void UpdateProduct(Product instance);
        partial void DeleteProduct(Product instance);
        partial void InsertShipper(Shipper instance);
        partial void UpdateShipper(Shipper instance);
        partial void DeleteShipper(Shipper instance);
        partial void InsertSupplier(Supplier instance);
        partial void UpdateSupplier(Supplier instance);
        partial void DeleteSupplier(Supplier instance);
        #endregion

        static NorthwindDataContext() {
        }

        public NorthwindDataContext(string connection) :
            base(connection, mappingSource) {
            OnCreated();
        }

        public NorthwindDataContext(System.Data.IDbConnection connection) :
            base(connection, mappingSource) {
            OnCreated();
        }

        public NorthwindDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) :
            base(connection, mappingSource) {
            OnCreated();
        }

        public NorthwindDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) :
            base(connection, mappingSource) {
            OnCreated();
        }

        public NorthwindDataContext() :
            base(global::NorthwindLinqTest.Properties.Settings.Default.Northwind_SqlConnectionString, mappingSource) {
            OnCreated();
        }

        public System.Data.Linq.Table<Category> Categories {
            get {
                return this.GetTable<Category>();
            }
        }

        public System.Data.Linq.Table<Customer> Customers {
            get {
                return this.GetTable<Customer>();
            }
        }

        public System.Data.Linq.Table<Employee> Employees {
            get {
                return this.GetTable<Employee>();
            }
        }

        public System.Data.Linq.Table<OrderDetail> OrderDetails {
            get {
                return this.GetTable<OrderDetail>();
            }
        }

        public System.Data.Linq.Table<Order> Orders {
            get {
                return this.GetTable<Order>();
            }
        }

        public System.Data.Linq.Table<Product> Products {
            get {
                return this.GetTable<Product>();
            }
        }

        public System.Data.Linq.Table<Shipper> Shippers {
            get {
                return this.GetTable<Shipper>();
            }
        }

        public System.Data.Linq.Table<Supplier> Suppliers {
            get {
                return this.GetTable<Supplier>();
            }
        }
    }

    [Table(Name = "Categories")]
    public partial class Category : INotifyPropertyChanging, INotifyPropertyChanged {

        private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

        private int _CategoryID;

        private string _CategoryName;

        private string _Description;

        private byte[] _Picture;

        private EntitySet<Product> _Products;

        #region Extensibility Method Definitions
        partial void OnLoaded();
        partial void OnValidate();
        partial void OnCreated();
        partial void OnCategoryIDChanging(int value);
        partial void OnCategoryIDChanged();
        partial void OnCategoryNameChanging(string value);
        partial void OnCategoryNameChanged();
        partial void OnDescriptionChanging(string value);
        partial void OnDescriptionChanged();
        partial void OnPictureChanging(byte[] value);
        partial void OnPictureChanged();
        #endregion

        public Category() {
            OnCreated();
            this._Products = new EntitySet<Product>(new Action<Product>(this.attach_Products), new Action<Product>(this.detach_Products));
        }

        [Column(Storage = "_CategoryID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
        public int CategoryID {
            get {
                return this._CategoryID;
            }
            set {
                if ((this._CategoryID != value)) {
                    this.OnCategoryIDChanging(value);
                    this.SendPropertyChanging();
                    this._CategoryID = value;
                    this.SendPropertyChanged("CategoryID");
                    this.OnCategoryIDChanged();
                }
            }
        }

        [Column(Storage = "_CategoryName", DbType = "NVarChar(15) NOT NULL", CanBeNull = false)]
        public string CategoryName {
            get {
                return this._CategoryName;
            }
            set {
                if ((this._CategoryName != value)) {
                    this.OnCategoryNameChanging(value);
                    this.SendPropertyChanging();
                    this._CategoryName = value;
                    this.SendPropertyChanged("CategoryName");
                    this.OnCategoryNameChanged();
                }
            }
        }

        [Column(Storage = "_Description", DbType = "NText", UpdateCheck = UpdateCheck.Never)]
        public string Description {
            get {
                return this._Description;
            }
            set {
                if ((this._Description != value)) {
                    this.OnDescriptionChanging(value);
                    this.SendPropertyChanging();
                    this._Description = value;
                    this.SendPropertyChanged("Description");
                    this.OnDescriptionChanged();
                }
            }
        }

        [Column(Storage = "_Picture", DbType = "Image", UpdateCheck = UpdateCheck.Never)]
        public byte[] Picture {
            get {
                return this._Picture;
            }
            set {
                if ((this._Picture != value)) {
                    this.OnPictureChanging(value);
                    this.SendPropertyChanging();
                    this._Picture = value;
                    this.SendPropertyChanged("Picture");
                    this.OnPictureChanged();
                }
            }
        }

        [Association(Name = "Category_Product", Storage = "_Products", OtherKey = "CategoryID")]
        public EntitySet<Product> Products {
            get {
                return this._Products;
            }
            set {
                this._Products.Assign(value);
            }
        }

        public event PropertyChangingEventHandler PropertyChanging;

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void SendPropertyChanging() {
            if ((this.PropertyChanging != null)) {
                this.PropertyChanging(this, emptyChangingEventArgs);
            }
        }

        protected virtual void SendPropertyChanged(String propertyName) {
            if ((this.PropertyChanged != null)) {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        private void attach_Products(Product entity) {
            this.SendPropertyChanging();
            entity.Category = this;
            this.SendPropertyChanged("Products");
        }

        private void detach_Products(Product entity) {
            this.SendPropertyChanging();
            entity.Category = null;
            this.SendPropertyChanged("Products");
        }
    }

    [Table(Name = "Customers")]
    public partial class Customer : INotifyPropertyChanging, INotifyPropertyChanged {

        private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

        private string _CustomerID;

        private string _CompanyName;

        private string _ContactName;

        private string _ContactTitle;

        private string _Address;

        private string _City;

        private string _Region;

        private string _PostalCode;

        private string _Country;

        private string _Phone;

        private string _Fax;

        private EntitySet<Order> _Orders;

        #region Extensibility Method Definitions
        partial void OnLoaded();
        partial void OnValidate();
        partial void OnCreated();
        partial void OnCustomerIDChanging(string value);
        partial void OnCustomerIDChanged();
        partial void OnCompanyNameChanging(string value);
        partial void OnCompanyNameChanged();
        partial void OnContactNameChanging(string value);
        partial void OnContactNameChanged();
        partial void OnContactTitleChanging(string value);
        partial void OnContactTitleChanged();
        partial void OnAddressChanging(string value);
        partial void OnAddressChanged();
        partial void OnCityChanging(string value);
        partial void OnCityChanged();
        partial void OnRegionChanging(string value);
        partial void OnRegionChanged();
        partial void OnPostalCodeChanging(string value);
        partial void OnPostalCodeChanged();
        partial void OnCountryChanging(string value);
        partial void OnCountryChanged();
        partial void OnPhoneChanging(string value);
        partial void OnPhoneChanged();
        partial void OnFaxChanging(string value);
        partial void OnFaxChanged();
        #endregion

        public Customer() {
            OnCreated();
            this._Orders = new EntitySet<Order>(new Action<Order>(this.attach_Orders), new Action<Order>(this.detach_Orders));
        }

        [Column(Storage = "_CustomerID", DbType = "NVarChar(5) NOT NULL", CanBeNull = false, IsPrimaryKey = true)]
        public string CustomerID {
            get {
                return this._CustomerID;
            }
            set {
                if ((this._CustomerID != value)) {
                    this.OnCustomerIDChanging(value);
                    this.SendPropertyChanging();
                    this._CustomerID = value;
                    this.SendPropertyChanged("CustomerID");
                    this.OnCustomerIDChanged();
                }
            }
        }

        [Column(Storage = "_CompanyName", DbType = "NVarChar(40) NOT NULL", CanBeNull = false)]
        public string CompanyName {
            get {
                return this._CompanyName;
            }
            set {
                if ((this._CompanyName != value)) {
                    this.OnCompanyNameChanging(value);
                    this.SendPropertyChanging();
                    this._CompanyName = value;
                    this.SendPropertyChanged("CompanyName");
                    this.OnCompanyNameChanged();
                }
            }
        }

        [Column(Storage = "_ContactName", DbType = "NVarChar(30)")]
        public string ContactName {
            get {
                return this._ContactName;
            }
            set {
                if ((this._ContactName != value)) {
                    this.OnContactNameChanging(value);
                    this.SendPropertyChanging();
                    this._ContactName = value;
                    this.SendPropertyChanged("ContactName");
                    this.OnContactNameChanged();
                }
            }
        }

        [Column(Storage = "_ContactTitle", DbType = "NVarChar(30)")]
        public string ContactTitle {
            get {
                return this._ContactTitle;
            }
            set {
                if ((this._ContactTitle != value)) {
                    this.OnContactTitleChanging(value);
                    this.SendPropertyChanging();
                    this._ContactTitle = value;
                    this.SendPropertyChanged("ContactTitle");
                    this.OnContactTitleChanged();
                }
            }
        }

        [Column(Storage = "_Address", DbType = "NVarChar(60)")]
        public string Address {
            get {
                return this._Address;
            }
            set {
                if ((this._Address != value)) {
                    this.OnAddressChanging(value);
                    this.SendPropertyChanging();
                    this._Address = value;
                    this.SendPropertyChanged("Address");
                    this.OnAddressChanged();
                }
            }
        }

        [Column(Storage = "_City", DbType = "NVarChar(15)")]
        public string City {
            get {
                return this._City;
            }
            set {
                if ((this._City != value)) {
                    this.OnCityChanging(value);
                    this.SendPropertyChanging();
                    this._City = value;
                    this.SendPropertyChanged("City");
                    this.OnCityChanged();
                }
            }
        }

        [Column(Storage = "_Region", DbType = "NVarChar(15)")]
        public string Region {
            get {
                return this._Region;
            }
            set {
                if ((this._Region != value)) {
                    this.OnRegionChanging(value);
                    this.SendPropertyChanging();
                    this._Region = value;
                    this.SendPropertyChanged("Region");
                    this.OnRegionChanged();
                }
            }
        }

        [Column(Storage = "_PostalCode", DbType = "NVarChar(10)")]
        public string PostalCode {
            get {
                return this._PostalCode;
            }
            set {
                if ((this._PostalCode != value)) {
                    this.OnPostalCodeChanging(value);
                    this.SendPropertyChanging();
                    this._PostalCode = value;
                    this.SendPropertyChanged("PostalCode");
                    this.OnPostalCodeChanged();
                }
            }
        }

        [Column(Storage = "_Country", DbType = "NVarChar(15)")]
        public string Country {
            get {
                return this._Country;
            }
            set {
                if ((this._Country != value)) {
                    this.OnCountryChanging(value);
                    this.SendPropertyChanging();
                    this._Country = value;
                    this.SendPropertyChanged("Country");
                    this.OnCountryChanged();
                }
            }
        }

        [Column(Storage = "_Phone", DbType = "NVarChar(24)")]
        public string Phone {
            get {
                return this._Phone;
            }
            set {
                if ((this._Phone != value)) {
                    this.OnPhoneChanging(value);
                    this.SendPropertyChanging();
                    this._Phone = value;
                    this.SendPropertyChanged("Phone");
                    this.OnPhoneChanged();
                }
            }
        }

        [Column(Storage = "_Fax", DbType = "NVarChar(24)")]
        public string Fax {
            get {
                return this._Fax;
            }
            set {
                if ((this._Fax != value)) {
                    this.OnFaxChanging(value);
                    this.SendPropertyChanging();
                    this._Fax = value;
                    this.SendPropertyChanged("Fax");
                    this.OnFaxChanged();
                }
            }
        }

        [Association(Name = "Customer_Order", Storage = "_Orders", OtherKey = "CustomerID")]
        public EntitySet<Order> Orders {
            get {
                return this._Orders;
            }
            set {
                this._Orders.Assign(value);
            }
        }

        public event PropertyChangingEventHandler PropertyChanging;

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void SendPropertyChanging() {
            if ((this.PropertyChanging != null)) {
                this.PropertyChanging(this, emptyChangingEventArgs);
            }
        }

        protected virtual void SendPropertyChanged(String propertyName) {
            if ((this.PropertyChanged != null)) {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        private void attach_Orders(Order entity) {
            this.SendPropertyChanging();
            entity.Customer = this;
            this.SendPropertyChanged("Orders");
        }

        private void detach_Orders(Order entity) {
            this.SendPropertyChanging();
            entity.Customer = null;
            this.SendPropertyChanged("Orders");
        }
    }

    [Table(Name = "Employees")]
    public partial class Employee : INotifyPropertyChanging, INotifyPropertyChanged {

        private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

        private int _EmployeeID;

        private string _LastName;

        private string _FirstName;

        private string _Title;

        private string _TitleOfCourtesy;

        private System.Nullable<System.DateTime> _BirthDate;

        private System.Nullable<System.DateTime> _HireDate;

        private string _Address;

        private string _City;

        private string _Region;

        private string _PostalCode;

        private string _Country;

        private string _HomePhone;

        private string _Extension;

        private string _Photo;

        private string _Notes;

        private System.Nullable<int> _ReportsTo;

        private EntitySet<Order> _Orders;

        #region Extensibility Method Definitions
        partial void OnLoaded();
        partial void OnValidate();
        partial void OnCreated();
        partial void OnEmployeeIDChanging(int value);
        partial void OnEmployeeIDChanged();
        partial void OnLastNameChanging(string value);
        partial void OnLastNameChanged();
        partial void OnFirstNameChanging(string value);
        partial void OnFirstNameChanged();
        partial void OnTitleChanging(string value);
        partial void OnTitleChanged();
        partial void OnTitleOfCourtesyChanging(string value);
        partial void OnTitleOfCourtesyChanged();
        partial void OnBirthDateChanging(System.Nullable<System.DateTime> value);
        partial void OnBirthDateChanged();
        partial void OnHireDateChanging(System.Nullable<System.DateTime> value);
        partial void OnHireDateChanged();
        partial void OnAddressChanging(string value);
        partial void OnAddressChanged();
        partial void OnCityChanging(string value);
        partial void OnCityChanged();
        partial void OnRegionChanging(string value);
        partial void OnRegionChanged();
        partial void OnPostalCodeChanging(string value);
        partial void OnPostalCodeChanged();
        partial void OnCountryChanging(string value);
        partial void OnCountryChanged();
        partial void OnHomePhoneChanging(string value);
        partial void OnHomePhoneChanged();
        partial void OnExtensionChanging(string value);
        partial void OnExtensionChanged();
        partial void OnPhotoChanging(string value);
        partial void OnPhotoChanged();
        partial void OnNotesChanging(string value);
        partial void OnNotesChanged();
        partial void OnReportsToChanging(System.Nullable<int> value);
        partial void OnReportsToChanged();
        #endregion

        public Employee() {
            OnCreated();
            this._Orders = new EntitySet<Order>(new Action<Order>(this.attach_Orders), new Action<Order>(this.detach_Orders));
        }

        [Column(Storage = "_EmployeeID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
        public int EmployeeID {
            get {
                return this._EmployeeID;
            }
            set {
                if ((this._EmployeeID != value)) {
                    this.OnEmployeeIDChanging(value);
                    this.SendPropertyChanging();
                    this._EmployeeID = value;
                    this.SendPropertyChanged("EmployeeID");
                    this.OnEmployeeIDChanged();
                }
            }
        }

        [Column(Storage = "_LastName", DbType = "NVarChar(20) NOT NULL", CanBeNull = false)]
        public string LastName {
            get {
                return this._LastName;
            }
            set {
                if ((this._LastName != value)) {
                    this.OnLastNameChanging(value);
                    this.SendPropertyChanging();
                    this._LastName = value;
                    this.SendPropertyChanged("LastName");
                    this.OnLastNameChanged();
                }
            }
        }

        [Column(Storage = "_FirstName", DbType = "NVarChar(10) NOT NULL", CanBeNull = false)]
        public string FirstName {
            get {
                return this._FirstName;
            }
            set {
                if ((this._FirstName != value)) {
                    this.OnFirstNameChanging(value);
                    this.SendPropertyChanging();
                    this._FirstName = value;
                    this.SendPropertyChanged("FirstName");
                    this.OnFirstNameChanged();
                }
            }
        }

        [Column(Storage = "_Title", DbType = "NVarChar(30)")]
        public string Title {
            get {
                return this._Title;
            }
            set {
                if ((this._Title != value)) {
                    this.OnTitleChanging(value);
                    this.SendPropertyChanging();
                    this._Title = value;
                    this.SendPropertyChanged("Title");
                    this.OnTitleChanged();
                }
            }
        }

        [Column(Storage = "_TitleOfCourtesy", DbType = "NVarChar(25)")]
        public string TitleOfCourtesy {
            get {
                return this._TitleOfCourtesy;
            }
            set {
                if ((this._TitleOfCourtesy != value)) {
                    this.OnTitleOfCourtesyChanging(value);
                    this.SendPropertyChanging();
                    this._TitleOfCourtesy = value;
                    this.SendPropertyChanged("TitleOfCourtesy");
                    this.OnTitleOfCourtesyChanged();
                }
            }
        }

        [Column(Storage = "_BirthDate", DbType = "DateTime")]
        public System.Nullable<System.DateTime> BirthDate {
            get {
                return this._BirthDate;
            }
            set {
                if ((this._BirthDate != value)) {
                    this.OnBirthDateChanging(value);
                    this.SendPropertyChanging();
                    this._BirthDate = value;
                    this.SendPropertyChanged("BirthDate");
                    this.OnBirthDateChanged();
                }
            }
        }

        [Column(Storage = "_HireDate", DbType = "DateTime")]
        public System.Nullable<System.DateTime> HireDate {
            get {
                return this._HireDate;
            }
            set {
                if ((this._HireDate != value)) {
                    this.OnHireDateChanging(value);
                    this.SendPropertyChanging();
                    this._HireDate = value;
                    this.SendPropertyChanged("HireDate");
                    this.OnHireDateChanged();
                }
            }
        }

        [Column(Storage = "_Address", DbType = "NVarChar(60)")]
        public string Address {
            get {
                return this._Address;
            }
            set {
                if ((this._Address != value)) {
                    this.OnAddressChanging(value);
                    this.SendPropertyChanging();
                    this._Address = value;
                    this.SendPropertyChanged("Address");
                    this.OnAddressChanged();
                }
            }
        }

        [Column(Storage = "_City", DbType = "NVarChar(15)")]
        public string City {
            get {
                return this._City;
            }
            set {
                if ((this._City != value)) {
                    this.OnCityChanging(value);
                    this.SendPropertyChanging();
                    this._City = value;
                    this.SendPropertyChanged("City");
                    this.OnCityChanged();
                }
            }
        }

        [Column(Storage = "_Region", DbType = "NVarChar(15)")]
        public string Region {
            get {
                return this._Region;
            }
            set {
                if ((this._Region != value)) {
                    this.OnRegionChanging(value);
                    this.SendPropertyChanging();
                    this._Region = value;
                    this.SendPropertyChanged("Region");
                    this.OnRegionChanged();
                }
            }
        }

        [Column(Storage = "_PostalCode", DbType = "NVarChar(10)")]
        public string PostalCode {
            get {
                return this._PostalCode;
            }
            set {
                if ((this._PostalCode != value)) {
                    this.OnPostalCodeChanging(value);
                    this.SendPropertyChanging();
                    this._PostalCode = value;
                    this.SendPropertyChanged("PostalCode");
                    this.OnPostalCodeChanged();
                }
            }
        }

        [Column(Storage = "_Country", DbType = "NVarChar(15)")]
        public string Country {
            get {
                return this._Country;
            }
            set {
                if ((this._Country != value)) {
                    this.OnCountryChanging(value);
                    this.SendPropertyChanging();
                    this._Country = value;
                    this.SendPropertyChanged("Country");
                    this.OnCountryChanged();
                }
            }
        }

        [Column(Storage = "_HomePhone", DbType = "NVarChar(24)")]
        public string HomePhone {
            get {
                return this._HomePhone;
            }
            set {
                if ((this._HomePhone != value)) {
                    this.OnHomePhoneChanging(value);
                    this.SendPropertyChanging();
                    this._HomePhone = value;
                    this.SendPropertyChanged("HomePhone");
                    this.OnHomePhoneChanged();
                }
            }
        }

        [Column(Storage = "_Extension", DbType = "NVarChar(4)")]
        public string Extension {
            get {
                return this._Extension;
            }
            set {
                if ((this._Extension != value)) {
                    this.OnExtensionChanging(value);
                    this.SendPropertyChanging();
                    this._Extension = value;
                    this.SendPropertyChanged("Extension");
                    this.OnExtensionChanged();
                }
            }
        }

        [Column(Storage = "_Photo", DbType = "NVarChar(255)")]
        public string Photo {
            get {
                return this._Photo;
            }
            set {
                if ((this._Photo != value)) {
                    this.OnPhotoChanging(value);
                    this.SendPropertyChanging();
                    this._Photo = value;
                    this.SendPropertyChanged("Photo");
                    this.OnPhotoChanged();
                }
            }
        }

        [Column(Storage = "_Notes", DbType = "NText", UpdateCheck = UpdateCheck.Never)]
        public string Notes {
            get {
                return this._Notes;
            }
            set {
                if ((this._Notes != value)) {
                    this.OnNotesChanging(value);
                    this.SendPropertyChanging();
                    this._Notes = value;
                    this.SendPropertyChanged("Notes");
                    this.OnNotesChanged();
                }
            }
        }

        [Column(Storage = "_ReportsTo", DbType = "Int")]
        public System.Nullable<int> ReportsTo {
            get {
                return this._ReportsTo;
            }
            set {
                if ((this._ReportsTo != value)) {
                    this.OnReportsToChanging(value);
                    this.SendPropertyChanging();
                    this._ReportsTo = value;
                    this.SendPropertyChanged("ReportsTo");
                    this.OnReportsToChanged();
                }
            }
        }

        [Association(Name = "Employee_Order", Storage = "_Orders", OtherKey = "EmployeeID")]
        public EntitySet<Order> Orders {
            get {
                return this._Orders;
            }
            set {
                this._Orders.Assign(value);
            }
        }

        public event PropertyChangingEventHandler PropertyChanging;

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void SendPropertyChanging() {
            if ((this.PropertyChanging != null)) {
                this.PropertyChanging(this, emptyChangingEventArgs);
            }
        }

        protected virtual void SendPropertyChanged(String propertyName) {
            if ((this.PropertyChanged != null)) {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        private void attach_Orders(Order entity) {
            this.SendPropertyChanging();
            entity.Employee = this;
            this.SendPropertyChanged("Orders");
        }

        private void detach_Orders(Order entity) {
            this.SendPropertyChanging();
            entity.Employee = null;
            this.SendPropertyChanged("Orders");
        }
    }

    [Table(Name = "[OrderDetails]")] 
    public partial class OrderDetail : INotifyPropertyChanging, INotifyPropertyChanged {

        private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

        private int _OrderID;

        private int _ProductID;

        private decimal _UnitPrice;

        private short _Quantity;

        private float _Discount;

        private EntityRef<Order> _Order;

        private EntityRef<Product> _Product;

        #region Extensibility Method Definitions
        partial void OnLoaded();
        partial void OnValidate();
        partial void OnCreated();
        partial void OnOrderIDChanging(int value);
        partial void OnOrderIDChanged();
        partial void OnProductIDChanging(int value);
        partial void OnProductIDChanged();
        partial void OnUnitPriceChanging(decimal value);
        partial void OnUnitPriceChanged();
        partial void OnQuantityChanging(short value);
        partial void OnQuantityChanged();
        partial void OnDiscountChanging(float value);
        partial void OnDiscountChanged();
        #endregion

        public OrderDetail() {
            OnCreated();
            this._Order = default(EntityRef<Order>);
            this._Product = default(EntityRef<Product>);
        }

        [Column(Storage = "_OrderID", DbType = "Int NOT NULL", IsPrimaryKey = true)]
        public int OrderID {
            get {
                return this._OrderID;
            }
            set {
                if ((this._OrderID != value)) {
                    if (this._Order.HasLoadedOrAssignedValue) {
                        throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
                    }
                    this.OnOrderIDChanging(value);
                    this.SendPropertyChanging();
                    this._OrderID = value;
                    this.SendPropertyChanged("OrderID");
                    this.OnOrderIDChanged();
                }
            }
        }

        [Column(Storage = "_ProductID", DbType = "Int NOT NULL", IsPrimaryKey = true)]
        public int ProductID {
            get {
                return this._ProductID;
            }
            set {
                if ((this._ProductID != value)) {
                    if (this._Product.HasLoadedOrAssignedValue) {
                        throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
                    }
                    this.OnProductIDChanging(value);
                    this.SendPropertyChanging();
                    this._ProductID = value;
                    this.SendPropertyChanged("ProductID");
                    this.OnProductIDChanged();
                }
            }
        }

        [Column(Storage = "_UnitPrice", DbType = "Money NOT NULL")]
        public decimal UnitPrice {
            get {
                return this._UnitPrice;
            }
            set {
                if ((this._UnitPrice != value)) {
                    this.OnUnitPriceChanging(value);
                    this.SendPropertyChanging();
                    this._UnitPrice = value;
                    this.SendPropertyChanged("UnitPrice");
                    this.OnUnitPriceChanged();
                }
            }
        }

        [Column(Storage = "_Quantity", DbType = "SmallInt NOT NULL")]
        public short Quantity {
            get {
                return this._Quantity;
            }
            set {
                if ((this._Quantity != value)) {
                    this.OnQuantityChanging(value);
                    this.SendPropertyChanging();
                    this._Quantity = value;
                    this.SendPropertyChanged("Quantity");
                    this.OnQuantityChanged();
                }
            }
        }

        [Column(Storage = "_Discount", DbType = "Real NOT NULL")]
        public float Discount {
            get {
                return this._Discount;
            }
            set {
                if ((this._Discount != value)) {
                    this.OnDiscountChanging(value);
                    this.SendPropertyChanging();
                    this._Discount = value;
                    this.SendPropertyChanged("Discount");
                    this.OnDiscountChanged();
                }
            }
        }

        [Association(Name = "Order_OrderDetail", Storage = "_Order", ThisKey = "OrderID", IsForeignKey = true, DeleteOnNull = true, DeleteRule = "CASCADE")]
        public Order Order {
            get {
                return this._Order.Entity;
            }
            set {
                Order previousValue = this._Order.Entity;
                if (((previousValue != value)
                            || (this._Order.HasLoadedOrAssignedValue == false))) {
                    this.SendPropertyChanging();
                    if ((previousValue != null)) {
                        this._Order.Entity = null;
                        previousValue.OrderDetails.Remove(this);
                    }
                    this._Order.Entity = value;
                    if ((value != null)) {
                        value.OrderDetails.Add(this);
                        this._OrderID = value.OrderID;
                    }
                    else {
                        this._OrderID = default(int);
                    }
                    this.SendPropertyChanged("Order");
                }
            }
        }

        [Association(Name = "Product_OrderDetail", Storage = "_Product", ThisKey = "ProductID", IsForeignKey = true)]
        public Product Product {
            get {
                return this._Product.Entity;
            }
            set {
                Product previousValue = this._Product.Entity;
                if (((previousValue != value)
                            || (this._Product.HasLoadedOrAssignedValue == false))) {
                    this.SendPropertyChanging();
                    if ((previousValue != null)) {
                        this._Product.Entity = null;
                        previousValue.OrderDetails.Remove(this);
                    }
                    this._Product.Entity = value;
                    if ((value != null)) {
                        value.OrderDetails.Add(this);
                        this._ProductID = value.ProductID;
                    }
                    else {
                        this._ProductID = default(int);
                    }
                    this.SendPropertyChanged("Product");
                }
            }
        }

        public event PropertyChangingEventHandler PropertyChanging;

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void SendPropertyChanging() {
            if ((this.PropertyChanging != null)) {
                this.PropertyChanging(this, emptyChangingEventArgs);
            }
        }

        protected virtual void SendPropertyChanged(String propertyName) {
            if ((this.PropertyChanged != null)) {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }

    [Table(Name = "Orders")]
    public partial class Order : INotifyPropertyChanging, INotifyPropertyChanged {

        private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

        private int _OrderID;

        private string _CustomerID;

        private System.Nullable<int> _EmployeeID;

        private System.Nullable<System.DateTime> _OrderDate;

        private System.Nullable<System.DateTime> _RequiredDate;

        private System.Nullable<System.DateTime> _ShippedDate;

        private System.Nullable<int> _ShipVia;

        private System.Nullable<decimal> _Freight;

        private string _ShipName;

        private string _ShipAddress;

        private string _ShipCity;

        private string _ShipRegion;

        private string _ShipPostalCode;

        private string _ShipCountry;

        private EntitySet<OrderDetail> _OrderDetails;

        private EntityRef<Customer> _Customer;

        private EntityRef<Employee> _Employee;

        private EntityRef<Shipper> _Shipper;

        #region Extensibility Method Definitions
        partial void OnLoaded();
        partial void OnValidate();
        partial void OnCreated();
        partial void OnOrderIDChanging(int value);
        partial void OnOrderIDChanged();
        partial void OnCustomerIDChanging(string value);
        partial void OnCustomerIDChanged();
        partial void OnEmployeeIDChanging(System.Nullable<int> value);
        partial void OnEmployeeIDChanged();
        partial void OnOrderDateChanging(System.Nullable<System.DateTime> value);
        partial void OnOrderDateChanged();
        partial void OnRequiredDateChanging(System.Nullable<System.DateTime> value);
        partial void OnRequiredDateChanged();
        partial void OnShippedDateChanging(System.Nullable<System.DateTime> value);
        partial void OnShippedDateChanged();
        partial void OnShipViaChanging(System.Nullable<int> value);
        partial void OnShipViaChanged();
        partial void OnFreightChanging(System.Nullable<decimal> value);
        partial void OnFreightChanged();
        partial void OnShipNameChanging(string value);
        partial void OnShipNameChanged();
        partial void OnShipAddressChanging(string value);
        partial void OnShipAddressChanged();
        partial void OnShipCityChanging(string value);
        partial void OnShipCityChanged();
        partial void OnShipRegionChanging(string value);
        partial void OnShipRegionChanged();
        partial void OnShipPostalCodeChanging(string value);
        partial void OnShipPostalCodeChanged();
        partial void OnShipCountryChanging(string value);
        partial void OnShipCountryChanged();
        #endregion

        public Order() {
            OnCreated();
            this._OrderDetails = new EntitySet<OrderDetail>(new Action<OrderDetail>(this.attach_OrderDetails), new Action<OrderDetail>(this.detach_OrderDetails));
            this._Customer = default(EntityRef<Customer>);
            this._Employee = default(EntityRef<Employee>);
            this._Shipper = default(EntityRef<Shipper>);
        }

        [Column(Storage = "_OrderID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
        public int OrderID {
            get {
                return this._OrderID;
            }
            set {
                if ((this._OrderID != value)) {
                    this.OnOrderIDChanging(value);
                    this.SendPropertyChanging();
                    this._OrderID = value;
                    this.SendPropertyChanged("OrderID");
                    this.OnOrderIDChanged();
                }
            }
        }

        [Column(Storage = "_CustomerID", DbType = "NVarChar(5)")]
        public string CustomerID {
            get {
                return this._CustomerID;
            }
            set {
                if ((this._CustomerID != value)) {
                    if (this._Customer.HasLoadedOrAssignedValue) {
                        throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
                    }
                    this.OnCustomerIDChanging(value);
                    this.SendPropertyChanging();
                    this._CustomerID = value;
                    this.SendPropertyChanged("CustomerID");
                    this.OnCustomerIDChanged();
                }
            }
        }

        [Column(Storage = "_EmployeeID", DbType = "Int")]
        public System.Nullable<int> EmployeeID {
            get {
                return this._EmployeeID;
            }
            set {
                if ((this._EmployeeID != value)) {
                    if (this._Employee.HasLoadedOrAssignedValue) {
                        throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
                    }
                    this.OnEmployeeIDChanging(value);
                    this.SendPropertyChanging();
                    this._EmployeeID = value;
                    this.SendPropertyChanged("EmployeeID");
                    this.OnEmployeeIDChanged();
                }
            }
        }

        [Column(Storage = "_OrderDate", DbType = "DateTime")]
        public System.Nullable<System.DateTime> OrderDate {
            get {
                return this._OrderDate;
            }
            set {
                if ((this._OrderDate != value)) {
                    this.OnOrderDateChanging(value);
                    this.SendPropertyChanging();
                    this._OrderDate = value;
                    this.SendPropertyChanged("OrderDate");
                    this.OnOrderDateChanged();
                }
            }
        }

        [Column(Storage = "_RequiredDate", DbType = "DateTime")]
        public System.Nullable<System.DateTime> RequiredDate {
            get {
                return this._RequiredDate;
            }
            set {
                if ((this._RequiredDate != value)) {
                    this.OnRequiredDateChanging(value);
                    this.SendPropertyChanging();
                    this._RequiredDate = value;
                    this.SendPropertyChanged("RequiredDate");
                    this.OnRequiredDateChanged();
                }
            }
        }

        [Column(Storage = "_ShippedDate", DbType = "DateTime")]
        public System.Nullable<System.DateTime> ShippedDate {
            get {
                return this._ShippedDate;
            }
            set {
                if ((this._ShippedDate != value)) {
                    this.OnShippedDateChanging(value);
                    this.SendPropertyChanging();
                    this._ShippedDate = value;
                    this.SendPropertyChanged("ShippedDate");
                    this.OnShippedDateChanged();
                }
            }
        }

        [Column(Storage = "_ShipVia", DbType = "Int")]
        public System.Nullable<int> ShipVia {
            get {
                return this._ShipVia;
            }
            set {
                if ((this._ShipVia != value)) {
                    if (this._Shipper.HasLoadedOrAssignedValue) {
                        throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
                    }
                    this.OnShipViaChanging(value);
                    this.SendPropertyChanging();
                    this._ShipVia = value;
                    this.SendPropertyChanged("ShipVia");
                    this.OnShipViaChanged();
                }
            }
        }

        [Column(Storage = "_Freight", DbType = "Money")]
        public System.Nullable<decimal> Freight {
            get {
                return this._Freight;
            }
            set {
                if ((this._Freight != value)) {
                    this.OnFreightChanging(value);
                    this.SendPropertyChanging();
                    this._Freight = value;
                    this.SendPropertyChanged("Freight");
                    this.OnFreightChanged();
                }
            }
        }

        [Column(Storage = "_ShipName", DbType = "NVarChar(40)")]
        public string ShipName {
            get {
                return this._ShipName;
            }
            set {
                if ((this._ShipName != value)) {
                    this.OnShipNameChanging(value);
                    this.SendPropertyChanging();
                    this._ShipName = value;
                    this.SendPropertyChanged("ShipName");
                    this.OnShipNameChanged();
                }
            }
        }

        [Column(Storage = "_ShipAddress", DbType = "NVarChar(60)")]
        public string ShipAddress {
            get {
                return this._ShipAddress;
            }
            set {
                if ((this._ShipAddress != value)) {
                    this.OnShipAddressChanging(value);
                    this.SendPropertyChanging();
                    this._ShipAddress = value;
                    this.SendPropertyChanged("ShipAddress");
                    this.OnShipAddressChanged();
                }
            }
        }

        [Column(Storage = "_ShipCity", DbType = "NVarChar(15)")]
        public string ShipCity {
            get {
                return this._ShipCity;
            }
            set {
                if ((this._ShipCity != value)) {
                    this.OnShipCityChanging(value);
                    this.SendPropertyChanging();
                    this._ShipCity = value;
                    this.SendPropertyChanged("ShipCity");
                    this.OnShipCityChanged();
                }
            }
        }

        [Column(Storage = "_ShipRegion", DbType = "NVarChar(15)")]
        public string ShipRegion {
            get {
                return this._ShipRegion;
            }
            set {
                if ((this._ShipRegion != value)) {
                    this.OnShipRegionChanging(value);
                    this.SendPropertyChanging();
                    this._ShipRegion = value;
                    this.SendPropertyChanged("ShipRegion");
                    this.OnShipRegionChanged();
                }
            }
        }

        [Column(Storage = "_ShipPostalCode", DbType = "NVarChar(10)")]
        public string ShipPostalCode {
            get {
                return this._ShipPostalCode;
            }
            set {
                if ((this._ShipPostalCode != value)) {
                    this.OnShipPostalCodeChanging(value);
                    this.SendPropertyChanging();
                    this._ShipPostalCode = value;
                    this.SendPropertyChanged("ShipPostalCode");
                    this.OnShipPostalCodeChanged();
                }
            }
        }

        [Column(Storage = "_ShipCountry", DbType = "NVarChar(15)")]
        public string ShipCountry {
            get {
                return this._ShipCountry;
            }
            set {
                if ((this._ShipCountry != value)) {
                    this.OnShipCountryChanging(value);
                    this.SendPropertyChanging();
                    this._ShipCountry = value;
                    this.SendPropertyChanged("ShipCountry");
                    this.OnShipCountryChanged();
                }
            }
        }

        [Association(Name = "Order_OrderDetail", Storage = "_OrderDetails", OtherKey = "OrderID")]
        public EntitySet<OrderDetail> OrderDetails {
            get {
                return this._OrderDetails;
            }
            set {
                this._OrderDetails.Assign(value);
            }
        }

        [Association(Name = "Customer_Order", Storage = "_Customer", ThisKey = "CustomerID", IsForeignKey = true)]
        public Customer Customer {
            get {
                return this._Customer.Entity;
            }
            set {
                Customer previousValue = this._Customer.Entity;
                if (((previousValue != value)
                            || (this._Customer.HasLoadedOrAssignedValue == false))) {
                    this.SendPropertyChanging();
                    if ((previousValue != null)) {
                        this._Customer.Entity = null;
                        previousValue.Orders.Remove(this);
                    }
                    this._Customer.Entity = value;
                    if ((value != null)) {
                        value.Orders.Add(this);
                        this._CustomerID = value.CustomerID;
                    }
                    else {
                        this._CustomerID = default(string);
                    }
                    this.SendPropertyChanged("Customer");
                }
            }
        }

        [Association(Name = "Employee_Order", Storage = "_Employee", ThisKey = "EmployeeID", IsForeignKey = true)]
        public Employee Employee {
            get {
                return this._Employee.Entity;
            }
            set {
                Employee previousValue = this._Employee.Entity;
                if (((previousValue != value)
                            || (this._Employee.HasLoadedOrAssignedValue == false))) {
                    this.SendPropertyChanging();
                    if ((previousValue != null)) {
                        this._Employee.Entity = null;
                        previousValue.Orders.Remove(this);
                    }
                    this._Employee.Entity = value;
                    if ((value != null)) {
                        value.Orders.Add(this);
                        this._EmployeeID = value.EmployeeID;
                    }
                    else {
                        this._EmployeeID = default(Nullable<int>);
                    }
                    this.SendPropertyChanged("Employee");
                }
            }
        }

        [Association(Name = "Shipper_Order", Storage = "_Shipper", ThisKey = "ShipVia", IsForeignKey = true)]
        public Shipper Shipper {
            get {
                return this._Shipper.Entity;
            }
            set {
                Shipper previousValue = this._Shipper.Entity;
                if (((previousValue != value)
                            || (this._Shipper.HasLoadedOrAssignedValue == false))) {
                    this.SendPropertyChanging();
                    if ((previousValue != null)) {
                        this._Shipper.Entity = null;
                        previousValue.Orders.Remove(this);
                    }
                    this._Shipper.Entity = value;
                    if ((value != null)) {
                        value.Orders.Add(this);
                        this._ShipVia = value.ShipperID;
                    }
                    else {
                        this._ShipVia = default(Nullable<int>);
                    }
                    this.SendPropertyChanged("Shipper");
                }
            }
        }

        public event PropertyChangingEventHandler PropertyChanging;

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void SendPropertyChanging() {
            if ((this.PropertyChanging != null)) {
                this.PropertyChanging(this, emptyChangingEventArgs);
            }
        }

        protected virtual void SendPropertyChanged(String propertyName) {
            if ((this.PropertyChanged != null)) {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        private void attach_OrderDetails(OrderDetail entity) {
            this.SendPropertyChanging();
            entity.Order = this;
            this.SendPropertyChanged("OrderDetails");
        }

        private void detach_OrderDetails(OrderDetail entity) {
            this.SendPropertyChanging();
            entity.Order = null;
            this.SendPropertyChanged("OrderDetails");
        }
    }

    [Table(Name = "Products")]
    public partial class Product : INotifyPropertyChanging, INotifyPropertyChanged {

        private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

        private int _ProductID;

        private string _ProductName;

        private System.Nullable<int> _SupplierID;

        private System.Nullable<int> _CategoryID;

        private string _QuantityPerUnit;

        private System.Nullable<decimal> _UnitPrice;

        private System.Nullable<short> _UnitsInStock;

        private System.Nullable<short> _UnitsOnOrder;

        private System.Nullable<short> _ReorderLevel;

        private bool _Discontinued;

        private EntitySet<OrderDetail> _OrderDetails;

        private EntityRef<Category> _Category;

        private EntityRef<Supplier> _Supplier;

        #region Extensibility Method Definitions
        partial void OnLoaded();
        partial void OnValidate();
        partial void OnCreated();
        partial void OnProductIDChanging(int value);
        partial void OnProductIDChanged();
        partial void OnProductNameChanging(string value);
        partial void OnProductNameChanged();
        partial void OnSupplierIDChanging(System.Nullable<int> value);
        partial void OnSupplierIDChanged();
        partial void OnCategoryIDChanging(System.Nullable<int> value);
        partial void OnCategoryIDChanged();
        partial void OnQuantityPerUnitChanging(string value);
        partial void OnQuantityPerUnitChanged();
        partial void OnUnitPriceChanging(System.Nullable<decimal> value);
        partial void OnUnitPriceChanged();
        partial void OnUnitsInStockChanging(System.Nullable<short> value);
        partial void OnUnitsInStockChanged();
        partial void OnUnitsOnOrderChanging(System.Nullable<short> value);
        partial void OnUnitsOnOrderChanged();
        partial void OnReorderLevelChanging(System.Nullable<short> value);
        partial void OnReorderLevelChanged();
        partial void OnDiscontinuedChanging(bool value);
        partial void OnDiscontinuedChanged();
        #endregion

        public Product() {
            OnCreated();
            this._OrderDetails = new EntitySet<OrderDetail>(new Action<OrderDetail>(this.attach_OrderDetails), new Action<OrderDetail>(this.detach_OrderDetails));
            this._Category = default(EntityRef<Category>);
            this._Supplier = default(EntityRef<Supplier>);
        }

        [Column(Storage = "_ProductID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
        public int ProductID {
            get {
                return this._ProductID;
            }
            set {
                if ((this._ProductID != value)) {
                    this.OnProductIDChanging(value);
                    this.SendPropertyChanging();
                    this._ProductID = value;
                    this.SendPropertyChanged("ProductID");
                    this.OnProductIDChanged();
                }
            }
        }

        [Column(Storage = "_ProductName", DbType = "NVarChar(40) NOT NULL", CanBeNull = false)]
        public string ProductName {
            get {
                return this._ProductName;
            }
            set {
                if ((this._ProductName != value)) {
                    this.OnProductNameChanging(value);
                    this.SendPropertyChanging();
                    this._ProductName = value;
                    this.SendPropertyChanged("ProductName");
                    this.OnProductNameChanged();
                }
            }
        }

        [Column(Storage = "_SupplierID", DbType = "Int")]
        public System.Nullable<int> SupplierID {
            get {
                return this._SupplierID;
            }
            set {
                if ((this._SupplierID != value)) {
                    if (this._Supplier.HasLoadedOrAssignedValue) {
                        throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
                    }
                    this.OnSupplierIDChanging(value);
                    this.SendPropertyChanging();
                    this._SupplierID = value;
                    this.SendPropertyChanged("SupplierID");
                    this.OnSupplierIDChanged();
                }
            }
        }

        [Column(Storage = "_CategoryID", DbType = "Int")]
        public System.Nullable<int> CategoryID {
            get {
                return this._CategoryID;
            }
            set {
                if ((this._CategoryID != value)) {
                    if (this._Category.HasLoadedOrAssignedValue) {
                        throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
                    }
                    this.OnCategoryIDChanging(value);
                    this.SendPropertyChanging();
                    this._CategoryID = value;
                    this.SendPropertyChanged("CategoryID");
                    this.OnCategoryIDChanged();
                }
            }
        }

        [Column(Storage = "_QuantityPerUnit", DbType = "NVarChar(20)")]
        public string QuantityPerUnit {
            get {
                return this._QuantityPerUnit;
            }
            set {
                if ((this._QuantityPerUnit != value)) {
                    this.OnQuantityPerUnitChanging(value);
                    this.SendPropertyChanging();
                    this._QuantityPerUnit = value;
                    this.SendPropertyChanged("QuantityPerUnit");
                    this.OnQuantityPerUnitChanged();
                }
            }
        }

        [Column(Storage = "_UnitPrice", DbType = "Money")]
        public System.Nullable<decimal> UnitPrice {
            get {
                return this._UnitPrice;
            }
            set {
                if ((this._UnitPrice != value)) {
                    this.OnUnitPriceChanging(value);
                    this.SendPropertyChanging();
                    this._UnitPrice = value;
                    this.SendPropertyChanged("UnitPrice");
                    this.OnUnitPriceChanged();
                }
            }
        }

        [Column(Storage = "_UnitsInStock", DbType = "SmallInt")]
        public System.Nullable<short> UnitsInStock {
            get {
                return this._UnitsInStock;
            }
            set {
                if ((this._UnitsInStock != value)) {
                    this.OnUnitsInStockChanging(value);
                    this.SendPropertyChanging();
                    this._UnitsInStock = value;
                    this.SendPropertyChanged("UnitsInStock");
                    this.OnUnitsInStockChanged();
                }
            }
        }

        [Column(Storage = "_UnitsOnOrder", DbType = "SmallInt")]
        public System.Nullable<short> UnitsOnOrder {
            get {
                return this._UnitsOnOrder;
            }
            set {
                if ((this._UnitsOnOrder != value)) {
                    this.OnUnitsOnOrderChanging(value);
                    this.SendPropertyChanging();
                    this._UnitsOnOrder = value;
                    this.SendPropertyChanged("UnitsOnOrder");
                    this.OnUnitsOnOrderChanged();
                }
            }
        }

        [Column(Storage = "_ReorderLevel", DbType = "SmallInt")]
        public System.Nullable<short> ReorderLevel {
            get {
                return this._ReorderLevel;
            }
            set {
                if ((this._ReorderLevel != value)) {
                    this.OnReorderLevelChanging(value);
                    this.SendPropertyChanging();
                    this._ReorderLevel = value;
                    this.SendPropertyChanged("ReorderLevel");
                    this.OnReorderLevelChanged();
                }
            }
        }

        [Column(Storage = "_Discontinued", DbType = "Bit NOT NULL")]
        public bool Discontinued {
            get {
                return this._Discontinued;
            }
            set {
                if ((this._Discontinued != value)) {
                    this.OnDiscontinuedChanging(value);
                    this.SendPropertyChanging();
                    this._Discontinued = value;
                    this.SendPropertyChanged("Discontinued");
                    this.OnDiscontinuedChanged();
                }
            }
        }

        [Association(Name = "Product_OrderDetail", Storage = "_OrderDetails", OtherKey = "ProductID")]
        public EntitySet<OrderDetail> OrderDetails {
            get {
                return this._OrderDetails;
            }
            set {
                this._OrderDetails.Assign(value);
            }
        }

        [Association(Name = "Category_Product", Storage = "_Category", ThisKey = "CategoryID", IsForeignKey = true)]
        public Category Category {
            get {
                return this._Category.Entity;
            }
            set {
                Category previousValue = this._Category.Entity;
                if (((previousValue != value)
                            || (this._Category.HasLoadedOrAssignedValue == false))) {
                    this.SendPropertyChanging();
                    if ((previousValue != null)) {
                        this._Category.Entity = null;
                        previousValue.Products.Remove(this);
                    }
                    this._Category.Entity = value;
                    if ((value != null)) {
                        value.Products.Add(this);
                        this._CategoryID = value.CategoryID;
                    }
                    else {
                        this._CategoryID = default(Nullable<int>);
                    }
                    this.SendPropertyChanged("Category");
                }
            }
        }

        [Association(Name = "Supplier_Product", Storage = "_Supplier", ThisKey = "SupplierID", IsForeignKey = true)]
        public Supplier Supplier {
            get {
                return this._Supplier.Entity;
            }
            set {
                Supplier previousValue = this._Supplier.Entity;
                if (((previousValue != value)
                            || (this._Supplier.HasLoadedOrAssignedValue == false))) {
                    this.SendPropertyChanging();
                    if ((previousValue != null)) {
                        this._Supplier.Entity = null;
                        previousValue.Products.Remove(this);
                    }
                    this._Supplier.Entity = value;
                    if ((value != null)) {
                        value.Products.Add(this);
                        this._SupplierID = value.SupplierID;
                    }
                    else {
                        this._SupplierID = default(Nullable<int>);
                    }
                    this.SendPropertyChanged("Supplier");
                }
            }
        }

        public event PropertyChangingEventHandler PropertyChanging;

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void SendPropertyChanging() {
            if ((this.PropertyChanging != null)) {
                this.PropertyChanging(this, emptyChangingEventArgs);
            }
        }

        protected virtual void SendPropertyChanged(String propertyName) {
            if ((this.PropertyChanged != null)) {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        private void attach_OrderDetails(OrderDetail entity) {
            this.SendPropertyChanging();
            entity.Product = this;
            this.SendPropertyChanged("OrderDetails");
        }

        private void detach_OrderDetails(OrderDetail entity) {
            this.SendPropertyChanging();
            entity.Product = null;
            this.SendPropertyChanged("OrderDetails");
        }
    }

    [Table(Name = "Shippers")]
    public partial class Shipper : INotifyPropertyChanging, INotifyPropertyChanged {

        private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

        private int _ShipperID;

        private string _CompanyName;

        private string _Phone;

        private EntitySet<Order> _Orders;

        #region Extensibility Method Definitions
        partial void OnLoaded();
        partial void OnValidate();
        partial void OnCreated();
        partial void OnShipperIDChanging(int value);
        partial void OnShipperIDChanged();
        partial void OnCompanyNameChanging(string value);
        partial void OnCompanyNameChanged();
        partial void OnPhoneChanging(string value);
        partial void OnPhoneChanged();
        #endregion

        public Shipper() {
            OnCreated();
            this._Orders = new EntitySet<Order>(new Action<Order>(this.attach_Orders), new Action<Order>(this.detach_Orders));
        }

        [Column(Storage = "_ShipperID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
        public int ShipperID {
            get {
                return this._ShipperID;
            }
            set {
                if ((this._ShipperID != value)) {
                    this.OnShipperIDChanging(value);
                    this.SendPropertyChanging();
                    this._ShipperID = value;
                    this.SendPropertyChanged("ShipperID");
                    this.OnShipperIDChanged();
                }
            }
        }

        [Column(Storage = "_CompanyName", DbType = "NVarChar(40) NOT NULL", CanBeNull = false)]
        public string CompanyName {
            get {
                return this._CompanyName;
            }
            set {
                if ((this._CompanyName != value)) {
                    this.OnCompanyNameChanging(value);
                    this.SendPropertyChanging();
                    this._CompanyName = value;
                    this.SendPropertyChanged("CompanyName");
                    this.OnCompanyNameChanged();
                }
            }
        }

        [Column(Storage = "_Phone", DbType = "NVarChar(24)")]
        public string Phone {
            get {
                return this._Phone;
            }
            set {
                if ((this._Phone != value)) {
                    this.OnPhoneChanging(value);
                    this.SendPropertyChanging();
                    this._Phone = value;
                    this.SendPropertyChanged("Phone");
                    this.OnPhoneChanged();
                }
            }
        }

        [Association(Name = "Shipper_Order", Storage = "_Orders", OtherKey = "ShipVia")]
        public EntitySet<Order> Orders {
            get {
                return this._Orders;
            }
            set {
                this._Orders.Assign(value);
            }
        }

        public event PropertyChangingEventHandler PropertyChanging;

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void SendPropertyChanging() {
            if ((this.PropertyChanging != null)) {
                this.PropertyChanging(this, emptyChangingEventArgs);
            }
        }

        protected virtual void SendPropertyChanged(String propertyName) {
            if ((this.PropertyChanged != null)) {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        private void attach_Orders(Order entity) {
            this.SendPropertyChanging();
            entity.Shipper = this;
            this.SendPropertyChanged("Orders");
        }

        private void detach_Orders(Order entity) {
            this.SendPropertyChanging();
            entity.Shipper = null;
            this.SendPropertyChanged("Orders");
        }
    }

    [Table(Name = "Suppliers")]
    public partial class Supplier : INotifyPropertyChanging, INotifyPropertyChanged {

        private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

        private int _SupplierID;

        private string _CompanyName;

        private string _ContactName;

        private string _ContactTitle;

        private string _Address;

        private string _City;

        private string _Region;

        private string _PostalCode;

        private string _Country;

        private string _Phone;

        private string _Fax;

        private string _HomePage;

        private EntitySet<Product> _Products;

        #region Extensibility Method Definitions
        partial void OnLoaded();
        partial void OnValidate();
        partial void OnCreated();
        partial void OnSupplierIDChanging(int value);
        partial void OnSupplierIDChanged();
        partial void OnCompanyNameChanging(string value);
        partial void OnCompanyNameChanged();
        partial void OnContactNameChanging(string value);
        partial void OnContactNameChanged();
        partial void OnContactTitleChanging(string value);
        partial void OnContactTitleChanged();
        partial void OnAddressChanging(string value);
        partial void OnAddressChanged();
        partial void OnCityChanging(string value);
        partial void OnCityChanged();
        partial void OnRegionChanging(string value);
        partial void OnRegionChanged();
        partial void OnPostalCodeChanging(string value);
        partial void OnPostalCodeChanged();
        partial void OnCountryChanging(string value);
        partial void OnCountryChanged();
        partial void OnPhoneChanging(string value);
        partial void OnPhoneChanged();
        partial void OnFaxChanging(string value);
        partial void OnFaxChanged();
        partial void OnHomePageChanging(string value);
        partial void OnHomePageChanged();
        #endregion

        public Supplier() {
            OnCreated();
            this._Products = new EntitySet<Product>(new Action<Product>(this.attach_Products), new Action<Product>(this.detach_Products));
        }

        [Column(Storage = "_SupplierID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
        public int SupplierID {
            get {
                return this._SupplierID;
            }
            set {
                if ((this._SupplierID != value)) {
                    this.OnSupplierIDChanging(value);
                    this.SendPropertyChanging();
                    this._SupplierID = value;
                    this.SendPropertyChanged("SupplierID");
                    this.OnSupplierIDChanged();
                }
            }
        }

        [Column(Storage = "_CompanyName", DbType = "NVarChar(40) NOT NULL", CanBeNull = false)]
        public string CompanyName {
            get {
                return this._CompanyName;
            }
            set {
                if ((this._CompanyName != value)) {
                    this.OnCompanyNameChanging(value);
                    this.SendPropertyChanging();
                    this._CompanyName = value;
                    this.SendPropertyChanged("CompanyName");
                    this.OnCompanyNameChanged();
                }
            }
        }

        [Column(Storage = "_ContactName", DbType = "NVarChar(30)")]
        public string ContactName {
            get {
                return this._ContactName;
            }
            set {
                if ((this._ContactName != value)) {
                    this.OnContactNameChanging(value);
                    this.SendPropertyChanging();
                    this._ContactName = value;
                    this.SendPropertyChanged("ContactName");
                    this.OnContactNameChanged();
                }
            }
        }

        [Column(Storage = "_ContactTitle", DbType = "NVarChar(30)")]
        public string ContactTitle {
            get {
                return this._ContactTitle;
            }
            set {
                if ((this._ContactTitle != value)) {
                    this.OnContactTitleChanging(value);
                    this.SendPropertyChanging();
                    this._ContactTitle = value;
                    this.SendPropertyChanged("ContactTitle");
                    this.OnContactTitleChanged();
                }
            }
        }

        [Column(Storage = "_Address", DbType = "NVarChar(60)")]
        public string Address {
            get {
                return this._Address;
            }
            set {
                if ((this._Address != value)) {
                    this.OnAddressChanging(value);
                    this.SendPropertyChanging();
                    this._Address = value;
                    this.SendPropertyChanged("Address");
                    this.OnAddressChanged();
                }
            }
        }

        [Column(Storage = "_City", DbType = "NVarChar(15)")]
        public string City {
            get {
                return this._City;
            }
            set {
                if ((this._City != value)) {
                    this.OnCityChanging(value);
                    this.SendPropertyChanging();
                    this._City = value;
                    this.SendPropertyChanged("City");
                    this.OnCityChanged();
                }
            }
        }

        [Column(Storage = "_Region", DbType = "NVarChar(15)")]
        public string Region {
            get {
                return this._Region;
            }
            set {
                if ((this._Region != value)) {
                    this.OnRegionChanging(value);
                    this.SendPropertyChanging();
                    this._Region = value;
                    this.SendPropertyChanged("Region");
                    this.OnRegionChanged();
                }
            }
        }

        [Column(Storage = "_PostalCode", DbType = "NVarChar(10)")]
        public string PostalCode {
            get {
                return this._PostalCode;
            }
            set {
                if ((this._PostalCode != value)) {
                    this.OnPostalCodeChanging(value);
                    this.SendPropertyChanging();
                    this._PostalCode = value;
                    this.SendPropertyChanged("PostalCode");
                    this.OnPostalCodeChanged();
                }
            }
        }

        [Column(Storage = "_Country", DbType = "NVarChar(15)")]
        public string Country {
            get {
                return this._Country;
            }
            set {
                if ((this._Country != value)) {
                    this.OnCountryChanging(value);
                    this.SendPropertyChanging();
                    this._Country = value;
                    this.SendPropertyChanged("Country");
                    this.OnCountryChanged();
                }
            }
        }

        [Column(Storage = "_Phone", DbType = "NVarChar(24)")]
        public string Phone {
            get {
                return this._Phone;
            }
            set {
                if ((this._Phone != value)) {
                    this.OnPhoneChanging(value);
                    this.SendPropertyChanging();
                    this._Phone = value;
                    this.SendPropertyChanged("Phone");
                    this.OnPhoneChanged();
                }
            }
        }

        [Column(Storage = "_Fax", DbType = "NVarChar(24)")]
        public string Fax {
            get {
                return this._Fax;
            }
            set {
                if ((this._Fax != value)) {
                    this.OnFaxChanging(value);
                    this.SendPropertyChanging();
                    this._Fax = value;
                    this.SendPropertyChanged("Fax");
                    this.OnFaxChanged();
                }
            }
        }

        [Column(Storage = "_HomePage", DbType = "NText", UpdateCheck = UpdateCheck.Never)]
        public string HomePage {
            get {
                return this._HomePage;
            }
            set {
                if ((this._HomePage != value)) {
                    this.OnHomePageChanging(value);
                    this.SendPropertyChanging();
                    this._HomePage = value;
                    this.SendPropertyChanged("HomePage");
                    this.OnHomePageChanged();
                }
            }
        }

        [Association(Name = "Supplier_Product", Storage = "_Products", OtherKey = "SupplierID")]
        public EntitySet<Product> Products {
            get {
                return this._Products;
            }
            set {
                this._Products.Assign(value);
            }
        }

        public event PropertyChangingEventHandler PropertyChanging;

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void SendPropertyChanging() {
            if ((this.PropertyChanging != null)) {
                this.PropertyChanging(this, emptyChangingEventArgs);
            }
        }

        protected virtual void SendPropertyChanged(String propertyName) {
            if ((this.PropertyChanged != null)) {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        private void attach_Products(Product entity) {
            this.SendPropertyChanging();
            entity.Supplier = this;
            this.SendPropertyChanged("Products");
        }

        private void detach_Products(Product entity) {
            this.SendPropertyChanging();
            entity.Supplier = null;
            this.SendPropertyChanged("Products");
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)


Written By
Technical Lead Olivine Technology
Kenya Kenya
Technical Lead, Olivine Technology - Nairobi, Kenya.

"The bane of productivity: confusing the rituals of work (sitting at your desk by 8:00am, wearing a clean and well pressed business costume etc.) with actual work that produces results."

Watch me!

Comments and Discussions