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

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



[global::System.Data.Linq.Mapping.DatabaseAttribute(Name="Northwind")]
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 InsertTerritory(Territory instance);
  partial void UpdateTerritory(Territory instance);
  partial void DeleteTerritory(Territory instance);
  partial void InsertCustomerCustomerDemo(CustomerCustomerDemo instance);
  partial void UpdateCustomerCustomerDemo(CustomerCustomerDemo instance);
  partial void DeleteCustomerCustomerDemo(CustomerCustomerDemo instance);
  partial void InsertCustomerDemographic(CustomerDemographic instance);
  partial void UpdateCustomerDemographic(CustomerDemographic instance);
  partial void DeleteCustomerDemographic(CustomerDemographic 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 InsertEmployeeTerritory(EmployeeTerritory instance);
  partial void UpdateEmployeeTerritory(EmployeeTerritory instance);
  partial void DeleteEmployeeTerritory(EmployeeTerritory instance);
  partial void InsertLargeEmployee(LargeEmployee instance);
  partial void UpdateLargeEmployee(LargeEmployee instance);
  partial void DeleteLargeEmployee(LargeEmployee instance);
  partial void InsertOrder_Detail(Order_Detail instance);
  partial void UpdateOrder_Detail(Order_Detail instance);
  partial void DeleteOrder_Detail(Order_Detail 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 InsertRegion(Region instance);
  partial void UpdateRegion(Region instance);
  partial void DeleteRegion(Region 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
	
	public NorthwindDataContext() : 
			base(global::System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString, mappingSource)
	{
		OnCreated();
	}
	
	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 System.Data.Linq.Table<Category> Categories
	{
		get
		{
			return this.GetTable<Category>();
		}
	}
	
	public System.Data.Linq.Table<Territory> Territories
	{
		get
		{
			return this.GetTable<Territory>();
		}
	}
	
	public System.Data.Linq.Table<CustomerCustomerDemo> CustomerCustomerDemos
	{
		get
		{
			return this.GetTable<CustomerCustomerDemo>();
		}
	}
	
	public System.Data.Linq.Table<CustomerDemographic> CustomerDemographics
	{
		get
		{
			return this.GetTable<CustomerDemographic>();
		}
	}
	
	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<EmployeeTerritory> EmployeeTerritories
	{
		get
		{
			return this.GetTable<EmployeeTerritory>();
		}
	}
	
	public System.Data.Linq.Table<LargeEmployee> LargeEmployees
	{
		get
		{
			return this.GetTable<LargeEmployee>();
		}
	}
	
	public System.Data.Linq.Table<Order_Detail> Order_Details
	{
		get
		{
			return this.GetTable<Order_Detail>();
		}
	}
	
	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<Region> Regions
	{
		get
		{
			return this.GetTable<Region>();
		}
	}
	
	public System.Data.Linq.Table<Shipper> Shippers
	{
		get
		{
			return this.GetTable<Shipper>();
		}
	}
	
	public System.Data.Linq.Table<Supplier> Suppliers
	{
		get
		{
			return this.GetTable<Supplier>();
		}
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.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 System.Data.Linq.Binary _Picture;
	
	private EntitySet<Product> _Products;
	
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    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(System.Data.Linq.Binary value);
    partial void OnPictureChanged();
    #endregion
	
	public Category()
	{
		this._Products = new EntitySet<Product>(new Action<Product>(this.attach_Products), new Action<Product>(this.detach_Products));
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Picture", DbType="Image", CanBeNull=true, UpdateCheck=UpdateCheck.Never)]
	public System.Data.Linq.Binary Picture
	{
		get
		{
			return this._Picture;
		}
		set
		{
			if ((this._Picture != value))
			{
				this.OnPictureChanging(value);
				this.SendPropertyChanging();
				this._Picture = value;
				this.SendPropertyChanged("Picture");
				this.OnPictureChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Category_Product", Storage="_Products", ThisKey="CategoryID", 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;
	}
	
	private void detach_Products(Product entity)
	{
		this.SendPropertyChanging();
		entity.Category = null;
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Territories")]
public partial class Territory : INotifyPropertyChanging, INotifyPropertyChanged
{
	
	private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
	
	private string _TerritoryID;
	
	private string _TerritoryDescription;
	
	private int _RegionID;
	
	private EntitySet<EmployeeTerritory> _EmployeeTerritories;
	
	private EntityRef<Region> _Region;
	
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnTerritoryIDChanging(string value);
    partial void OnTerritoryIDChanged();
    partial void OnTerritoryDescriptionChanging(string value);
    partial void OnTerritoryDescriptionChanged();
    partial void OnRegionIDChanging(int value);
    partial void OnRegionIDChanged();
    #endregion
	
	public Territory()
	{
		this._EmployeeTerritories = new EntitySet<EmployeeTerritory>(new Action<EmployeeTerritory>(this.attach_EmployeeTerritories), new Action<EmployeeTerritory>(this.detach_EmployeeTerritories));
		this._Region = default(EntityRef<Region>);
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TerritoryID", DbType="NVarChar(20) NOT NULL", CanBeNull=false, IsPrimaryKey=true)]
	public string TerritoryID
	{
		get
		{
			return this._TerritoryID;
		}
		set
		{
			if ((this._TerritoryID != value))
			{
				this.OnTerritoryIDChanging(value);
				this.SendPropertyChanging();
				this._TerritoryID = value;
				this.SendPropertyChanged("TerritoryID");
				this.OnTerritoryIDChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TerritoryDescription", DbType="NVarChar(50) NOT NULL", CanBeNull=false)]
	public string TerritoryDescription
	{
		get
		{
			return this._TerritoryDescription;
		}
		set
		{
			if ((this._TerritoryDescription != value))
			{
				this.OnTerritoryDescriptionChanging(value);
				this.SendPropertyChanging();
				this._TerritoryDescription = value;
				this.SendPropertyChanged("TerritoryDescription");
				this.OnTerritoryDescriptionChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RegionID", DbType="Int NOT NULL")]
	public int RegionID
	{
		get
		{
			return this._RegionID;
		}
		set
		{
			if ((this._RegionID != value))
			{
				if (this._Region.HasLoadedOrAssignedValue)
				{
					throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
				}
				this.OnRegionIDChanging(value);
				this.SendPropertyChanging();
				this._RegionID = value;
				this.SendPropertyChanged("RegionID");
				this.OnRegionIDChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Territory_EmployeeTerritory", Storage="_EmployeeTerritories", ThisKey="TerritoryID", OtherKey="TerritoryID")]
	public EntitySet<EmployeeTerritory> EmployeeTerritories
	{
		get
		{
			return this._EmployeeTerritories;
		}
		set
		{
			this._EmployeeTerritories.Assign(value);
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Region_Territory", Storage="_Region", ThisKey="RegionID", OtherKey="RegionID", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
	public Region Region
	{
		get
		{
			return this._Region.Entity;
		}
		set
		{
			Region previousValue = this._Region.Entity;
			if (((previousValue != value) 
						|| (this._Region.HasLoadedOrAssignedValue == false)))
			{
				this.SendPropertyChanging();
				if ((previousValue != null))
				{
					this._Region.Entity = null;
					previousValue.Territories.Remove(this);
				}
				this._Region.Entity = value;
				if ((value != null))
				{
					value.Territories.Add(this);
					this._RegionID = value.RegionID;
				}
				else
				{
					this._RegionID = default(int);
				}
				this.SendPropertyChanged("Region");
			}
		}
	}
	
	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_EmployeeTerritories(EmployeeTerritory entity)
	{
		this.SendPropertyChanging();
		entity.Territory = this;
	}
	
	private void detach_EmployeeTerritories(EmployeeTerritory entity)
	{
		this.SendPropertyChanging();
		entity.Territory = null;
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.CustomerCustomerDemo")]
public partial class CustomerCustomerDemo : INotifyPropertyChanging, INotifyPropertyChanged
{
	
	private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
	
	private string _CustomerID;
	
	private string _CustomerTypeID;
	
	private EntityRef<CustomerDemographic> _CustomerDemographic;
	
	private EntityRef<Customer> _Customer;
	
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnCustomerIDChanging(string value);
    partial void OnCustomerIDChanged();
    partial void OnCustomerTypeIDChanging(string value);
    partial void OnCustomerTypeIDChanged();
    #endregion
	
	public CustomerCustomerDemo()
	{
		this._CustomerDemographic = default(EntityRef<CustomerDemographic>);
		this._Customer = default(EntityRef<Customer>);
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerID", DbType="NChar(5) NOT NULL", CanBeNull=false, IsPrimaryKey=true)]
	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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerTypeID", DbType="NChar(10) NOT NULL", CanBeNull=false, IsPrimaryKey=true)]
	public string CustomerTypeID
	{
		get
		{
			return this._CustomerTypeID;
		}
		set
		{
			if ((this._CustomerTypeID != value))
			{
				if (this._CustomerDemographic.HasLoadedOrAssignedValue)
				{
					throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
				}
				this.OnCustomerTypeIDChanging(value);
				this.SendPropertyChanging();
				this._CustomerTypeID = value;
				this.SendPropertyChanged("CustomerTypeID");
				this.OnCustomerTypeIDChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="CustomerDemographic_CustomerCustomerDemo", Storage="_CustomerDemographic", ThisKey="CustomerTypeID", OtherKey="CustomerTypeID", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
	public CustomerDemographic CustomerDemographic
	{
		get
		{
			return this._CustomerDemographic.Entity;
		}
		set
		{
			CustomerDemographic previousValue = this._CustomerDemographic.Entity;
			if (((previousValue != value) 
						|| (this._CustomerDemographic.HasLoadedOrAssignedValue == false)))
			{
				this.SendPropertyChanging();
				if ((previousValue != null))
				{
					this._CustomerDemographic.Entity = null;
					previousValue.CustomerCustomerDemos.Remove(this);
				}
				this._CustomerDemographic.Entity = value;
				if ((value != null))
				{
					value.CustomerCustomerDemos.Add(this);
					this._CustomerTypeID = value.CustomerTypeID;
				}
				else
				{
					this._CustomerTypeID = default(string);
				}
				this.SendPropertyChanged("CustomerDemographic");
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Customer_CustomerCustomerDemo", Storage="_Customer", ThisKey="CustomerID", OtherKey="CustomerID", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
	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.CustomerCustomerDemos.Remove(this);
				}
				this._Customer.Entity = value;
				if ((value != null))
				{
					value.CustomerCustomerDemos.Add(this);
					this._CustomerID = value.CustomerID;
				}
				else
				{
					this._CustomerID = default(string);
				}
				this.SendPropertyChanged("Customer");
			}
		}
	}
	
	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));
		}
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.CustomerDemographics")]
public partial class CustomerDemographic : INotifyPropertyChanging, INotifyPropertyChanged
{
	
	private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
	
	private string _CustomerTypeID;
	
	private string _CustomerDesc;
	
	private EntitySet<CustomerCustomerDemo> _CustomerCustomerDemos;
	
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnCustomerTypeIDChanging(string value);
    partial void OnCustomerTypeIDChanged();
    partial void OnCustomerDescChanging(string value);
    partial void OnCustomerDescChanged();
    #endregion
	
	public CustomerDemographic()
	{
		this._CustomerCustomerDemos = new EntitySet<CustomerCustomerDemo>(new Action<CustomerCustomerDemo>(this.attach_CustomerCustomerDemos), new Action<CustomerCustomerDemo>(this.detach_CustomerCustomerDemos));
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerTypeID", DbType="NChar(10) NOT NULL", CanBeNull=false, IsPrimaryKey=true)]
	public string CustomerTypeID
	{
		get
		{
			return this._CustomerTypeID;
		}
		set
		{
			if ((this._CustomerTypeID != value))
			{
				this.OnCustomerTypeIDChanging(value);
				this.SendPropertyChanging();
				this._CustomerTypeID = value;
				this.SendPropertyChanged("CustomerTypeID");
				this.OnCustomerTypeIDChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerDesc", DbType="NText", UpdateCheck=UpdateCheck.Never)]
	public string CustomerDesc
	{
		get
		{
			return this._CustomerDesc;
		}
		set
		{
			if ((this._CustomerDesc != value))
			{
				this.OnCustomerDescChanging(value);
				this.SendPropertyChanging();
				this._CustomerDesc = value;
				this.SendPropertyChanged("CustomerDesc");
				this.OnCustomerDescChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="CustomerDemographic_CustomerCustomerDemo", Storage="_CustomerCustomerDemos", ThisKey="CustomerTypeID", OtherKey="CustomerTypeID")]
	public EntitySet<CustomerCustomerDemo> CustomerCustomerDemos
	{
		get
		{
			return this._CustomerCustomerDemos;
		}
		set
		{
			this._CustomerCustomerDemos.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_CustomerCustomerDemos(CustomerCustomerDemo entity)
	{
		this.SendPropertyChanging();
		entity.CustomerDemographic = this;
	}
	
	private void detach_CustomerCustomerDemos(CustomerCustomerDemo entity)
	{
		this.SendPropertyChanging();
		entity.CustomerDemographic = null;
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.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 System.Nullable<bool> _Bool;
	
	private EntitySet<CustomerCustomerDemo> _CustomerCustomerDemos;
	
	private EntitySet<Order> _Orders;
	
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    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();
    partial void OnBoolChanging(System.Nullable<bool> value);
    partial void OnBoolChanged();
    #endregion
	
	public Customer()
	{
		this._CustomerCustomerDemos = new EntitySet<CustomerCustomerDemo>(new Action<CustomerCustomerDemo>(this.attach_CustomerCustomerDemos), new Action<CustomerCustomerDemo>(this.detach_CustomerCustomerDemos));
		this._Orders = new EntitySet<Order>(new Action<Order>(this.attach_Orders), new Action<Order>(this.detach_Orders));
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerID", DbType="NChar(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Bool", DbType="Bit")]
	public System.Nullable<bool> Bool
	{
		get
		{
			return this._Bool;
		}
		set
		{
			if ((this._Bool != value))
			{
				this.OnBoolChanging(value);
				this.SendPropertyChanging();
				this._Bool = value;
				this.SendPropertyChanged("Bool");
				this.OnBoolChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Customer_CustomerCustomerDemo", Storage="_CustomerCustomerDemos", ThisKey="CustomerID", OtherKey="CustomerID")]
	public EntitySet<CustomerCustomerDemo> CustomerCustomerDemos
	{
		get
		{
			return this._CustomerCustomerDemos;
		}
		set
		{
			this._CustomerCustomerDemos.Assign(value);
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Customer_Order", Storage="_Orders", ThisKey="CustomerID", 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_CustomerCustomerDemos(CustomerCustomerDemo entity)
	{
		this.SendPropertyChanging();
		entity.Customer = this;
	}
	
	private void detach_CustomerCustomerDemos(CustomerCustomerDemo entity)
	{
		this.SendPropertyChanging();
		entity.Customer = null;
	}
	
	private void attach_Orders(Order entity)
	{
		this.SendPropertyChanging();
		entity.Customer = this;
	}
	
	private void detach_Orders(Order entity)
	{
		this.SendPropertyChanging();
		entity.Customer = null;
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.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 System.Data.Linq.Binary _Photo;
	
	private string _Notes;
	
	private System.Nullable<int> _ReportsTo;
	
	private string _PhotoPath;
	
	private EntitySet<Employee> _Employees;
	
	private EntitySet<EmployeeTerritory> _EmployeeTerritories;
	
	private EntitySet<Order> _Orders;
	
	private EntityRef<Employee> _Employee1;
	
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    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(System.Data.Linq.Binary value);
    partial void OnPhotoChanged();
    partial void OnNotesChanging(string value);
    partial void OnNotesChanged();
    partial void OnReportsToChanging(System.Nullable<int> value);
    partial void OnReportsToChanged();
    partial void OnPhotoPathChanging(string value);
    partial void OnPhotoPathChanged();
    #endregion
	
	public Employee()
	{
		this._Employees = new EntitySet<Employee>(new Action<Employee>(this.attach_Employees), new Action<Employee>(this.detach_Employees));
		this._EmployeeTerritories = new EntitySet<EmployeeTerritory>(new Action<EmployeeTerritory>(this.attach_EmployeeTerritories), new Action<EmployeeTerritory>(this.detach_EmployeeTerritories));
		this._Orders = new EntitySet<Order>(new Action<Order>(this.attach_Orders), new Action<Order>(this.detach_Orders));
		this._Employee1 = default(EntityRef<Employee>);
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Photo", DbType="Image", CanBeNull=true, UpdateCheck=UpdateCheck.Never)]
	public System.Data.Linq.Binary Photo
	{
		get
		{
			return this._Photo;
		}
		set
		{
			if ((this._Photo != value))
			{
				this.OnPhotoChanging(value);
				this.SendPropertyChanging();
				this._Photo = value;
				this.SendPropertyChanged("Photo");
				this.OnPhotoChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ReportsTo", DbType="Int")]
	public System.Nullable<int> ReportsTo
	{
		get
		{
			return this._ReportsTo;
		}
		set
		{
			if ((this._ReportsTo != value))
			{
				if (this._Employee1.HasLoadedOrAssignedValue)
				{
					throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
				}
				this.OnReportsToChanging(value);
				this.SendPropertyChanging();
				this._ReportsTo = value;
				this.SendPropertyChanged("ReportsTo");
				this.OnReportsToChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PhotoPath", DbType="NVarChar(255)")]
	public string PhotoPath
	{
		get
		{
			return this._PhotoPath;
		}
		set
		{
			if ((this._PhotoPath != value))
			{
				this.OnPhotoPathChanging(value);
				this.SendPropertyChanging();
				this._PhotoPath = value;
				this.SendPropertyChanged("PhotoPath");
				this.OnPhotoPathChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Employee_Employee", Storage="_Employees", ThisKey="EmployeeID", OtherKey="ReportsTo")]
	public EntitySet<Employee> Employees
	{
		get
		{
			return this._Employees;
		}
		set
		{
			this._Employees.Assign(value);
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Employee_EmployeeTerritory", Storage="_EmployeeTerritories", ThisKey="EmployeeID", OtherKey="EmployeeID")]
	public EntitySet<EmployeeTerritory> EmployeeTerritories
	{
		get
		{
			return this._EmployeeTerritories;
		}
		set
		{
			this._EmployeeTerritories.Assign(value);
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Employee_Order", Storage="_Orders", ThisKey="EmployeeID", OtherKey="EmployeeID")]
	public EntitySet<Order> Orders
	{
		get
		{
			return this._Orders;
		}
		set
		{
			this._Orders.Assign(value);
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Employee_Employee", Storage="_Employee1", ThisKey="ReportsTo", OtherKey="EmployeeID", IsForeignKey=true)]
	public Employee Employee1
	{
		get
		{
			return this._Employee1.Entity;
		}
		set
		{
			Employee previousValue = this._Employee1.Entity;
			if (((previousValue != value) 
						|| (this._Employee1.HasLoadedOrAssignedValue == false)))
			{
				this.SendPropertyChanging();
				if ((previousValue != null))
				{
					this._Employee1.Entity = null;
					previousValue.Employees.Remove(this);
				}
				this._Employee1.Entity = value;
				if ((value != null))
				{
					value.Employees.Add(this);
					this._ReportsTo = value.EmployeeID;
				}
				else
				{
					this._ReportsTo = default(Nullable<int>);
				}
				this.SendPropertyChanged("Employee1");
			}
		}
	}
	
	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_Employees(Employee entity)
	{
		this.SendPropertyChanging();
		entity.Employee1 = this;
	}
	
	private void detach_Employees(Employee entity)
	{
		this.SendPropertyChanging();
		entity.Employee1 = null;
	}
	
	private void attach_EmployeeTerritories(EmployeeTerritory entity)
	{
		this.SendPropertyChanging();
		entity.Employee = this;
	}
	
	private void detach_EmployeeTerritories(EmployeeTerritory entity)
	{
		this.SendPropertyChanging();
		entity.Employee = null;
	}
	
	private void attach_Orders(Order entity)
	{
		this.SendPropertyChanging();
		entity.Employee = this;
	}
	
	private void detach_Orders(Order entity)
	{
		this.SendPropertyChanging();
		entity.Employee = null;
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.EmployeeTerritories")]
public partial class EmployeeTerritory : INotifyPropertyChanging, INotifyPropertyChanged
{
	
	private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
	
	private int _EmployeeID;
	
	private string _TerritoryID;
	
	private EntityRef<Employee> _Employee;
	
	private EntityRef<Territory> _Territory;
	
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnEmployeeIDChanging(int value);
    partial void OnEmployeeIDChanged();
    partial void OnTerritoryIDChanging(string value);
    partial void OnTerritoryIDChanged();
    #endregion
	
	public EmployeeTerritory()
	{
		this._Employee = default(EntityRef<Employee>);
		this._Territory = default(EntityRef<Territory>);
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_EmployeeID", DbType="Int NOT NULL", IsPrimaryKey=true)]
	public 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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TerritoryID", DbType="NVarChar(20) NOT NULL", CanBeNull=false, IsPrimaryKey=true)]
	public string TerritoryID
	{
		get
		{
			return this._TerritoryID;
		}
		set
		{
			if ((this._TerritoryID != value))
			{
				if (this._Territory.HasLoadedOrAssignedValue)
				{
					throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
				}
				this.OnTerritoryIDChanging(value);
				this.SendPropertyChanging();
				this._TerritoryID = value;
				this.SendPropertyChanged("TerritoryID");
				this.OnTerritoryIDChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Employee_EmployeeTerritory", Storage="_Employee", ThisKey="EmployeeID", OtherKey="EmployeeID", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
	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.EmployeeTerritories.Remove(this);
				}
				this._Employee.Entity = value;
				if ((value != null))
				{
					value.EmployeeTerritories.Add(this);
					this._EmployeeID = value.EmployeeID;
				}
				else
				{
					this._EmployeeID = default(int);
				}
				this.SendPropertyChanged("Employee");
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Territory_EmployeeTerritory", Storage="_Territory", ThisKey="TerritoryID", OtherKey="TerritoryID", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
	public Territory Territory
	{
		get
		{
			return this._Territory.Entity;
		}
		set
		{
			Territory previousValue = this._Territory.Entity;
			if (((previousValue != value) 
						|| (this._Territory.HasLoadedOrAssignedValue == false)))
			{
				this.SendPropertyChanging();
				if ((previousValue != null))
				{
					this._Territory.Entity = null;
					previousValue.EmployeeTerritories.Remove(this);
				}
				this._Territory.Entity = value;
				if ((value != null))
				{
					value.EmployeeTerritories.Add(this);
					this._TerritoryID = value.TerritoryID;
				}
				else
				{
					this._TerritoryID = default(string);
				}
				this.SendPropertyChanged("Territory");
			}
		}
	}
	
	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));
		}
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.LargeEmployees")]
public partial class LargeEmployee : 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 System.Data.Linq.Binary _Photo;
	
	private string _Notes;
	
	private System.Nullable<int> _ReportsTo;
	
	private string _PhotoPath;
	
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    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(System.Data.Linq.Binary value);
    partial void OnPhotoChanged();
    partial void OnNotesChanging(string value);
    partial void OnNotesChanged();
    partial void OnReportsToChanging(System.Nullable<int> value);
    partial void OnReportsToChanged();
    partial void OnPhotoPathChanging(string value);
    partial void OnPhotoPathChanged();
    #endregion
	
	public LargeEmployee()
	{
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Photo", DbType="Image", CanBeNull=true, UpdateCheck=UpdateCheck.Never)]
	public System.Data.Linq.Binary Photo
	{
		get
		{
			return this._Photo;
		}
		set
		{
			if ((this._Photo != value))
			{
				this.OnPhotoChanging(value);
				this.SendPropertyChanging();
				this._Photo = value;
				this.SendPropertyChanged("Photo");
				this.OnPhotoChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PhotoPath", DbType="NVarChar(255)")]
	public string PhotoPath
	{
		get
		{
			return this._PhotoPath;
		}
		set
		{
			if ((this._PhotoPath != value))
			{
				this.OnPhotoPathChanging(value);
				this.SendPropertyChanging();
				this._PhotoPath = value;
				this.SendPropertyChanged("PhotoPath");
				this.OnPhotoPathChanged();
			}
		}
	}
	
	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));
		}
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.[Order Details]")]
public partial class Order_Detail : 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(System.Data.Linq.ChangeAction action);
    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 Order_Detail()
	{
		this._Order = default(EntityRef<Order>);
		this._Product = default(EntityRef<Product>);
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitPrice", DbType="Decimal(5,2) 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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Order_Order_Detail", Storage="_Order", ThisKey="OrderID", OtherKey="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.Order_Details.Remove(this);
				}
				this._Order.Entity = value;
				if ((value != null))
				{
					value.Order_Details.Add(this);
					this._OrderID = value.OrderID;
				}
				else
				{
					this._OrderID = default(int);
				}
				this.SendPropertyChanged("Order");
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Product_Order_Detail", Storage="_Product", ThisKey="ProductID", OtherKey="ProductID", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
	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.Order_Details.Remove(this);
				}
				this._Product.Entity = value;
				if ((value != null))
				{
					value.Order_Details.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));
		}
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.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<Order_Detail> _Order_Details;
	
	private EntityRef<Customer> _Customer;
	
	private EntityRef<Employee> _Employee;
	
	private EntityRef<Shipper> _Shipper;
	
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    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()
	{
		this._Order_Details = new EntitySet<Order_Detail>(new Action<Order_Detail>(this.attach_Order_Details), new Action<Order_Detail>(this.detach_Order_Details));
		this._Customer = default(EntityRef<Customer>);
		this._Employee = default(EntityRef<Employee>);
		this._Shipper = default(EntityRef<Shipper>);
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerID", DbType="NChar(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Freight", DbType="Decimal(6,2)")]
	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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Order_Order_Detail", Storage="_Order_Details", ThisKey="OrderID", OtherKey="OrderID")]
	public EntitySet<Order_Detail> Order_Details
	{
		get
		{
			return this._Order_Details;
		}
		set
		{
			this._Order_Details.Assign(value);
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Customer_Order", Storage="_Customer", ThisKey="CustomerID", OtherKey="CustomerID", IsForeignKey=true, DeleteRule="CASCADE")]
	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");
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Employee_Order", Storage="_Employee", ThisKey="EmployeeID", OtherKey="EmployeeID", IsForeignKey=true, DeleteRule="CASCADE")]
	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");
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Shipper_Order", Storage="_Shipper", ThisKey="ShipVia", OtherKey="ShipperID", IsForeignKey=true, DeleteRule="CASCADE")]
	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_Order_Details(Order_Detail entity)
	{
		this.SendPropertyChanging();
		entity.Order = this;
	}
	
	private void detach_Order_Details(Order_Detail entity)
	{
		this.SendPropertyChanging();
		entity.Order = null;
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.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<Order_Detail> _Order_Details;
	
	private EntityRef<Category> _Category;
	
	private EntityRef<Supplier> _Supplier;
	
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    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()
	{
		this._Order_Details = new EntitySet<Order_Detail>(new Action<Order_Detail>(this.attach_Order_Details), new Action<Order_Detail>(this.detach_Order_Details));
		this._Category = default(EntityRef<Category>);
		this._Supplier = default(EntityRef<Supplier>);
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitPrice", DbType="Decimal(5,2)")]
	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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Product_Order_Detail", Storage="_Order_Details", ThisKey="ProductID", OtherKey="ProductID")]
	public EntitySet<Order_Detail> Order_Details
	{
		get
		{
			return this._Order_Details;
		}
		set
		{
			this._Order_Details.Assign(value);
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Category_Product", Storage="_Category", ThisKey="CategoryID", OtherKey="CategoryID", IsForeignKey=true, DeleteRule="CASCADE")]
	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");
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Supplier_Product", Storage="_Supplier", ThisKey="SupplierID", OtherKey="SupplierID", IsForeignKey=true, DeleteRule="CASCADE")]
	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_Order_Details(Order_Detail entity)
	{
		this.SendPropertyChanging();
		entity.Product = this;
	}
	
	private void detach_Order_Details(Order_Detail entity)
	{
		this.SendPropertyChanging();
		entity.Product = null;
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Region")]
public partial class Region : INotifyPropertyChanging, INotifyPropertyChanged
{
	
	private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
	
	private int _RegionID;
	
	private string _RegionDescription;
	
	private EntitySet<Territory> _Territories;
	
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnRegionIDChanging(int value);
    partial void OnRegionIDChanged();
    partial void OnRegionDescriptionChanging(string value);
    partial void OnRegionDescriptionChanged();
    #endregion
	
	public Region()
	{
		this._Territories = new EntitySet<Territory>(new Action<Territory>(this.attach_Territories), new Action<Territory>(this.detach_Territories));
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RegionID", DbType="Int NOT NULL", IsPrimaryKey=true)]
	public int RegionID
	{
		get
		{
			return this._RegionID;
		}
		set
		{
			if ((this._RegionID != value))
			{
				this.OnRegionIDChanging(value);
				this.SendPropertyChanging();
				this._RegionID = value;
				this.SendPropertyChanged("RegionID");
				this.OnRegionIDChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RegionDescription", DbType="NChar(50) NOT NULL", CanBeNull=false)]
	public string RegionDescription
	{
		get
		{
			return this._RegionDescription;
		}
		set
		{
			if ((this._RegionDescription != value))
			{
				this.OnRegionDescriptionChanging(value);
				this.SendPropertyChanging();
				this._RegionDescription = value;
				this.SendPropertyChanged("RegionDescription");
				this.OnRegionDescriptionChanged();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Region_Territory", Storage="_Territories", ThisKey="RegionID", OtherKey="RegionID")]
	public EntitySet<Territory> Territories
	{
		get
		{
			return this._Territories;
		}
		set
		{
			this._Territories.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_Territories(Territory entity)
	{
		this.SendPropertyChanging();
		entity.Region = this;
	}
	
	private void detach_Territories(Territory entity)
	{
		this.SendPropertyChanging();
		entity.Region = null;
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.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(System.Data.Linq.ChangeAction action);
    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()
	{
		this._Orders = new EntitySet<Order>(new Action<Order>(this.attach_Orders), new Action<Order>(this.detach_Orders));
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Shipper_Order", Storage="_Orders", ThisKey="ShipperID", 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;
	}
	
	private void detach_Orders(Order entity)
	{
		this.SendPropertyChanging();
		entity.Shipper = null;
	}
}

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.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(System.Data.Linq.ChangeAction action);
    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()
	{
		this._Products = new EntitySet<Product>(new Action<Product>(this.attach_Products), new Action<Product>(this.detach_Products));
		OnCreated();
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.ColumnAttribute(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();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Supplier_Product", Storage="_Products", ThisKey="SupplierID", 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;
	}
	
	private void detach_Products(Product entity)
	{
		this.SendPropertyChanging();
		entity.Supplier = null;
	}
}
#pragma warning restore 1591
