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

namespace MrCMS.Web.Apps.Ecommerce.Areas.Admin.Services.NopImport.Nop280
{
	using System.Data.Linq;
	using System.Data.Linq.Mapping;
	using System.Data;
	using System.Collections.Generic;
	using System.Reflection;
	using System.Linq;
	using System.Linq.Expressions;
	using System.ComponentModel;
	using System;
	
	
	[global::System.Data.Linq.Mapping.DatabaseAttribute(Name="nop-2.80")]
	public partial class Nop280DataContext : System.Data.Linq.DataContext
	{
		
		private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
		
    #region Extensibility Method Definitions
    partial void OnCreated();
    partial void InsertNop280_Product(Nop280_Product instance);
    partial void UpdateNop280_Product(Nop280_Product instance);
    partial void DeleteNop280_Product(Nop280_Product instance);
    partial void InsertNop280_Product_SpecificationAttribute_Mapping(Nop280_Product_SpecificationAttribute_Mapping instance);
    partial void UpdateNop280_Product_SpecificationAttribute_Mapping(Nop280_Product_SpecificationAttribute_Mapping instance);
    partial void DeleteNop280_Product_SpecificationAttribute_Mapping(Nop280_Product_SpecificationAttribute_Mapping instance);
    partial void InsertNop280_Product_Category_Mapping(Nop280_Product_Category_Mapping instance);
    partial void UpdateNop280_Product_Category_Mapping(Nop280_Product_Category_Mapping instance);
    partial void DeleteNop280_Product_Category_Mapping(Nop280_Product_Category_Mapping instance);
    partial void InsertNop280_Product_Manufacturer_Mapping(Nop280_Product_Manufacturer_Mapping instance);
    partial void UpdateNop280_Product_Manufacturer_Mapping(Nop280_Product_Manufacturer_Mapping instance);
    partial void DeleteNop280_Product_Manufacturer_Mapping(Nop280_Product_Manufacturer_Mapping instance);
    partial void InsertNop280_Product_ProductTag_Mapping(Nop280_Product_ProductTag_Mapping instance);
    partial void UpdateNop280_Product_ProductTag_Mapping(Nop280_Product_ProductTag_Mapping instance);
    partial void DeleteNop280_Product_ProductTag_Mapping(Nop280_Product_ProductTag_Mapping instance);
    partial void InsertNop280_ProductTag(Nop280_ProductTag instance);
    partial void UpdateNop280_ProductTag(Nop280_ProductTag instance);
    partial void DeleteNop280_ProductTag(Nop280_ProductTag instance);
    partial void InsertNop280_Product_Picture_Mapping(Nop280_Product_Picture_Mapping instance);
    partial void UpdateNop280_Product_Picture_Mapping(Nop280_Product_Picture_Mapping instance);
    partial void DeleteNop280_Product_Picture_Mapping(Nop280_Product_Picture_Mapping instance);
    partial void InsertNop280_Picture(Nop280_Picture instance);
    partial void UpdateNop280_Picture(Nop280_Picture instance);
    partial void DeleteNop280_Picture(Nop280_Picture instance);
    partial void InsertNop280_ProductVariant(Nop280_ProductVariant instance);
    partial void UpdateNop280_ProductVariant(Nop280_ProductVariant instance);
    partial void DeleteNop280_ProductVariant(Nop280_ProductVariant instance);
    partial void InsertNop280_ProductVariant_ProductAttribute_Mapping(Nop280_ProductVariant_ProductAttribute_Mapping instance);
    partial void UpdateNop280_ProductVariant_ProductAttribute_Mapping(Nop280_ProductVariant_ProductAttribute_Mapping instance);
    partial void DeleteNop280_ProductVariant_ProductAttribute_Mapping(Nop280_ProductVariant_ProductAttribute_Mapping instance);
    partial void InsertNop280_ProductVariantAttributeCombination(Nop280_ProductVariantAttributeCombination instance);
    partial void UpdateNop280_ProductVariantAttributeCombination(Nop280_ProductVariantAttributeCombination instance);
    partial void DeleteNop280_ProductVariantAttributeCombination(Nop280_ProductVariantAttributeCombination instance);
    partial void InsertNop280_ProductVariantAttributeValue(Nop280_ProductVariantAttributeValue instance);
    partial void UpdateNop280_ProductVariantAttributeValue(Nop280_ProductVariantAttributeValue instance);
    partial void DeleteNop280_ProductVariantAttributeValue(Nop280_ProductVariantAttributeValue instance);
    partial void InsertNop280_ProductAttribute(Nop280_ProductAttribute instance);
    partial void UpdateNop280_ProductAttribute(Nop280_ProductAttribute instance);
    partial void DeleteNop280_ProductAttribute(Nop280_ProductAttribute instance);
    partial void InsertNop280_Manufacturer(Nop280_Manufacturer instance);
    partial void UpdateNop280_Manufacturer(Nop280_Manufacturer instance);
    partial void DeleteNop280_Manufacturer(Nop280_Manufacturer instance);
    partial void InsertNop280_Category(Nop280_Category instance);
    partial void UpdateNop280_Category(Nop280_Category instance);
    partial void DeleteNop280_Category(Nop280_Category instance);
    partial void InsertNop280_SpecificationAttributeOption(Nop280_SpecificationAttributeOption instance);
    partial void UpdateNop280_SpecificationAttributeOption(Nop280_SpecificationAttributeOption instance);
    partial void DeleteNop280_SpecificationAttributeOption(Nop280_SpecificationAttributeOption instance);
    partial void InsertNop280_SpecificationAttribute(Nop280_SpecificationAttribute instance);
    partial void UpdateNop280_SpecificationAttribute(Nop280_SpecificationAttribute instance);
    partial void DeleteNop280_SpecificationAttribute(Nop280_SpecificationAttribute instance);
    partial void InsertNop280_TaxCategory(Nop280_TaxCategory instance);
    partial void UpdateNop280_TaxCategory(Nop280_TaxCategory instance);
    partial void DeleteNop280_TaxCategory(Nop280_TaxCategory instance);
    partial void InsertNop280_TaxRate(Nop280_TaxRate instance);
    partial void UpdateNop280_TaxRate(Nop280_TaxRate instance);
    partial void DeleteNop280_TaxRate(Nop280_TaxRate instance);
    partial void InsertNop280_Country(Nop280_Country instance);
    partial void UpdateNop280_Country(Nop280_Country instance);
    partial void DeleteNop280_Country(Nop280_Country instance);
    partial void InsertNop280_StateProvince(Nop280_StateProvince instance);
    partial void UpdateNop280_StateProvince(Nop280_StateProvince instance);
    partial void DeleteNop280_StateProvince(Nop280_StateProvince instance);
    partial void InsertNop280_TierPrice(Nop280_TierPrice instance);
    partial void UpdateNop280_TierPrice(Nop280_TierPrice instance);
    partial void DeleteNop280_TierPrice(Nop280_TierPrice instance);
    partial void InsertNop280_Download(Nop280_Download instance);
    partial void UpdateNop280_Download(Nop280_Download instance);
    partial void DeleteNop280_Download(Nop280_Download instance);
    partial void InsertNop280_CustomerAddress(Nop280_CustomerAddress instance);
    partial void UpdateNop280_CustomerAddress(Nop280_CustomerAddress instance);
    partial void DeleteNop280_CustomerAddress(Nop280_CustomerAddress instance);
    partial void InsertNop280_Customer(Nop280_Customer instance);
    partial void UpdateNop280_Customer(Nop280_Customer instance);
    partial void DeleteNop280_Customer(Nop280_Customer instance);
    partial void InsertNop280_GenericAttribute(Nop280_GenericAttribute instance);
    partial void UpdateNop280_GenericAttribute(Nop280_GenericAttribute instance);
    partial void DeleteNop280_GenericAttribute(Nop280_GenericAttribute instance);
    partial void InsertNop280_Address(Nop280_Address instance);
    partial void UpdateNop280_Address(Nop280_Address instance);
    partial void DeleteNop280_Address(Nop280_Address instance);
    partial void InsertNop280_UrlRecord(Nop280_UrlRecord instance);
    partial void UpdateNop280_UrlRecord(Nop280_UrlRecord instance);
    partial void DeleteNop280_UrlRecord(Nop280_UrlRecord instance);
    partial void InsertNop280_Setting(Nop280_Setting instance);
    partial void UpdateNop280_Setting(Nop280_Setting instance);
    partial void DeleteNop280_Setting(Nop280_Setting instance);
    partial void InsertNop280_Order(Nop280_Order instance);
    partial void UpdateNop280_Order(Nop280_Order instance);
    partial void DeleteNop280_Order(Nop280_Order instance);
    partial void InsertNop280_OrderProductVariant(Nop280_OrderProductVariant instance);
    partial void UpdateNop280_OrderProductVariant(Nop280_OrderProductVariant instance);
    partial void DeleteNop280_OrderProductVariant(Nop280_OrderProductVariant instance);
    partial void InsertNop280_OrderNote(Nop280_OrderNote instance);
    partial void UpdateNop280_OrderNote(Nop280_OrderNote instance);
    partial void DeleteNop280_OrderNote(Nop280_OrderNote instance);
    #endregion
		
		public Nop280DataContext() : 
				base(global::System.Configuration.ConfigurationManager.ConnectionStrings["nop_2_80ConnectionString"].ConnectionString, mappingSource)
		{
			OnCreated();
		}
		
		public Nop280DataContext(string connection) : 
				base(connection, mappingSource)
		{
			OnCreated();
		}
		
		public Nop280DataContext(System.Data.IDbConnection connection) : 
				base(connection, mappingSource)
		{
			OnCreated();
		}
		
		public Nop280DataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
				base(connection, mappingSource)
		{
			OnCreated();
		}
		
		public Nop280DataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
				base(connection, mappingSource)
		{
			OnCreated();
		}
		
		public System.Data.Linq.Table<Nop280_Product> Nop280_Products
		{
			get
			{
				return this.GetTable<Nop280_Product>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Product_SpecificationAttribute_Mapping> Nop280_Product_SpecificationAttribute_Mappings
		{
			get
			{
				return this.GetTable<Nop280_Product_SpecificationAttribute_Mapping>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Product_Category_Mapping> Nop280_Product_Category_Mappings
		{
			get
			{
				return this.GetTable<Nop280_Product_Category_Mapping>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Product_Manufacturer_Mapping> Nop280_Product_Manufacturer_Mappings
		{
			get
			{
				return this.GetTable<Nop280_Product_Manufacturer_Mapping>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Product_ProductTag_Mapping> Nop280_Product_ProductTag_Mappings
		{
			get
			{
				return this.GetTable<Nop280_Product_ProductTag_Mapping>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_ProductTag> Nop280_ProductTags
		{
			get
			{
				return this.GetTable<Nop280_ProductTag>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Product_Picture_Mapping> Nop280_Product_Picture_Mappings
		{
			get
			{
				return this.GetTable<Nop280_Product_Picture_Mapping>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Picture> Nop280_Pictures
		{
			get
			{
				return this.GetTable<Nop280_Picture>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_ProductVariant> Nop280_ProductVariants
		{
			get
			{
				return this.GetTable<Nop280_ProductVariant>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_ProductVariant_ProductAttribute_Mapping> Nop280_ProductVariant_ProductAttribute_Mappings
		{
			get
			{
				return this.GetTable<Nop280_ProductVariant_ProductAttribute_Mapping>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_ProductVariantAttributeCombination> Nop280_ProductVariantAttributeCombinations
		{
			get
			{
				return this.GetTable<Nop280_ProductVariantAttributeCombination>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_ProductVariantAttributeValue> Nop280_ProductVariantAttributeValues
		{
			get
			{
				return this.GetTable<Nop280_ProductVariantAttributeValue>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_ProductAttribute> Nop280_ProductAttributes
		{
			get
			{
				return this.GetTable<Nop280_ProductAttribute>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Manufacturer> Nop280_Manufacturers
		{
			get
			{
				return this.GetTable<Nop280_Manufacturer>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Category> Nop280_Categories
		{
			get
			{
				return this.GetTable<Nop280_Category>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_SpecificationAttributeOption> Nop280_SpecificationAttributeOptions
		{
			get
			{
				return this.GetTable<Nop280_SpecificationAttributeOption>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_SpecificationAttribute> Nop280_SpecificationAttributes
		{
			get
			{
				return this.GetTable<Nop280_SpecificationAttribute>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_TaxCategory> Nop280_TaxCategories
		{
			get
			{
				return this.GetTable<Nop280_TaxCategory>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_TaxRate> Nop280_TaxRates
		{
			get
			{
				return this.GetTable<Nop280_TaxRate>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Country> Nop280_Countries
		{
			get
			{
				return this.GetTable<Nop280_Country>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_StateProvince> Nop280_StateProvinces
		{
			get
			{
				return this.GetTable<Nop280_StateProvince>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_TierPrice> Nop280_TierPrices
		{
			get
			{
				return this.GetTable<Nop280_TierPrice>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Download> Nop280_Downloads
		{
			get
			{
				return this.GetTable<Nop280_Download>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_CustomerAddress> Nop280_CustomerAddresses
		{
			get
			{
				return this.GetTable<Nop280_CustomerAddress>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Customer> Nop280_Customers
		{
			get
			{
				return this.GetTable<Nop280_Customer>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_GenericAttribute> Nop280_GenericAttributes
		{
			get
			{
				return this.GetTable<Nop280_GenericAttribute>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Address> Nop280_Addresses
		{
			get
			{
				return this.GetTable<Nop280_Address>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_UrlRecord> Nop280_UrlRecords
		{
			get
			{
				return this.GetTable<Nop280_UrlRecord>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Setting> Nop280_Settings
		{
			get
			{
				return this.GetTable<Nop280_Setting>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_Order> Nop280_Orders
		{
			get
			{
				return this.GetTable<Nop280_Order>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_OrderProductVariant> Nop280_OrderProductVariants
		{
			get
			{
				return this.GetTable<Nop280_OrderProductVariant>();
			}
		}
		
		public System.Data.Linq.Table<Nop280_OrderNote> Nop280_OrderNotes
		{
			get
			{
				return this.GetTable<Nop280_OrderNote>();
			}
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Product")]
	public partial class Nop280_Product : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private string _Name;
		
		private string _ShortDescription;
		
		private string _FullDescription;
		
		private string _AdminComment;
		
		private int _ProductTemplateId;
		
		private bool _ShowOnHomePage;
		
		private string _MetaKeywords;
		
		private string _MetaDescription;
		
		private string _MetaTitle;
		
		private bool _AllowCustomerReviews;
		
		private int _ApprovedRatingSum;
		
		private int _NotApprovedRatingSum;
		
		private int _ApprovedTotalReviews;
		
		private int _NotApprovedTotalReviews;
		
		private bool _SubjectToAcl;
		
		private bool _Published;
		
		private bool _Deleted;
		
		private System.DateTime _CreatedOnUtc;
		
		private System.DateTime _UpdatedOnUtc;
		
		private EntitySet<Nop280_Product_SpecificationAttribute_Mapping> _Product_SpecificationAttribute_Mappings;
		
		private EntitySet<Nop280_Product_Category_Mapping> _Product_Category_Mappings;
		
		private EntitySet<Nop280_Product_Manufacturer_Mapping> _Product_Manufacturer_Mappings;
		
		private EntitySet<Nop280_Product_ProductTag_Mapping> _Product_ProductTag_Mappings;
		
		private EntitySet<Nop280_Product_Picture_Mapping> _Product_Picture_Mappings;
		
		private EntitySet<Nop280_ProductVariant> _ProductVariants;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnShortDescriptionChanging(string value);
    partial void OnShortDescriptionChanged();
    partial void OnFullDescriptionChanging(string value);
    partial void OnFullDescriptionChanged();
    partial void OnAdminCommentChanging(string value);
    partial void OnAdminCommentChanged();
    partial void OnProductTemplateIdChanging(int value);
    partial void OnProductTemplateIdChanged();
    partial void OnShowOnHomePageChanging(bool value);
    partial void OnShowOnHomePageChanged();
    partial void OnMetaKeywordsChanging(string value);
    partial void OnMetaKeywordsChanged();
    partial void OnMetaDescriptionChanging(string value);
    partial void OnMetaDescriptionChanged();
    partial void OnMetaTitleChanging(string value);
    partial void OnMetaTitleChanged();
    partial void OnAllowCustomerReviewsChanging(bool value);
    partial void OnAllowCustomerReviewsChanged();
    partial void OnApprovedRatingSumChanging(int value);
    partial void OnApprovedRatingSumChanged();
    partial void OnNotApprovedRatingSumChanging(int value);
    partial void OnNotApprovedRatingSumChanged();
    partial void OnApprovedTotalReviewsChanging(int value);
    partial void OnApprovedTotalReviewsChanged();
    partial void OnNotApprovedTotalReviewsChanging(int value);
    partial void OnNotApprovedTotalReviewsChanged();
    partial void OnSubjectToAclChanging(bool value);
    partial void OnSubjectToAclChanged();
    partial void OnPublishedChanging(bool value);
    partial void OnPublishedChanged();
    partial void OnDeletedChanging(bool value);
    partial void OnDeletedChanged();
    partial void OnCreatedOnUtcChanging(System.DateTime value);
    partial void OnCreatedOnUtcChanged();
    partial void OnUpdatedOnUtcChanging(System.DateTime value);
    partial void OnUpdatedOnUtcChanged();
    #endregion
		
		public Nop280_Product()
		{
			this._Product_SpecificationAttribute_Mappings = new EntitySet<Nop280_Product_SpecificationAttribute_Mapping>(new Action<Nop280_Product_SpecificationAttribute_Mapping>(this.attach_Product_SpecificationAttribute_Mappings), new Action<Nop280_Product_SpecificationAttribute_Mapping>(this.detach_Product_SpecificationAttribute_Mappings));
			this._Product_Category_Mappings = new EntitySet<Nop280_Product_Category_Mapping>(new Action<Nop280_Product_Category_Mapping>(this.attach_Product_Category_Mappings), new Action<Nop280_Product_Category_Mapping>(this.detach_Product_Category_Mappings));
			this._Product_Manufacturer_Mappings = new EntitySet<Nop280_Product_Manufacturer_Mapping>(new Action<Nop280_Product_Manufacturer_Mapping>(this.attach_Product_Manufacturer_Mappings), new Action<Nop280_Product_Manufacturer_Mapping>(this.detach_Product_Manufacturer_Mappings));
			this._Product_ProductTag_Mappings = new EntitySet<Nop280_Product_ProductTag_Mapping>(new Action<Nop280_Product_ProductTag_Mapping>(this.attach_Product_ProductTag_Mappings), new Action<Nop280_Product_ProductTag_Mapping>(this.detach_Product_ProductTag_Mappings));
			this._Product_Picture_Mappings = new EntitySet<Nop280_Product_Picture_Mapping>(new Action<Nop280_Product_Picture_Mapping>(this.attach_Product_Picture_Mappings), new Action<Nop280_Product_Picture_Mapping>(this.detach_Product_Picture_Mappings));
			this._ProductVariants = new EntitySet<Nop280_ProductVariant>(new Action<Nop280_ProductVariant>(this.attach_ProductVariants), new Action<Nop280_ProductVariant>(this.detach_ProductVariants));
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(400) NOT NULL", CanBeNull=false)]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShortDescription", DbType="NVarChar(MAX)")]
		public string ShortDescription
		{
			get
			{
				return this._ShortDescription;
			}
			set
			{
				if ((this._ShortDescription != value))
				{
					this.OnShortDescriptionChanging(value);
					this.SendPropertyChanging();
					this._ShortDescription = value;
					this.SendPropertyChanged("ShortDescription");
					this.OnShortDescriptionChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FullDescription", DbType="NVarChar(MAX)")]
		public string FullDescription
		{
			get
			{
				return this._FullDescription;
			}
			set
			{
				if ((this._FullDescription != value))
				{
					this.OnFullDescriptionChanging(value);
					this.SendPropertyChanging();
					this._FullDescription = value;
					this.SendPropertyChanged("FullDescription");
					this.OnFullDescriptionChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AdminComment", DbType="NVarChar(MAX)")]
		public string AdminComment
		{
			get
			{
				return this._AdminComment;
			}
			set
			{
				if ((this._AdminComment != value))
				{
					this.OnAdminCommentChanging(value);
					this.SendPropertyChanging();
					this._AdminComment = value;
					this.SendPropertyChanged("AdminComment");
					this.OnAdminCommentChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductTemplateId", DbType="Int NOT NULL")]
		public int ProductTemplateId
		{
			get
			{
				return this._ProductTemplateId;
			}
			set
			{
				if ((this._ProductTemplateId != value))
				{
					this.OnProductTemplateIdChanging(value);
					this.SendPropertyChanging();
					this._ProductTemplateId = value;
					this.SendPropertyChanged("ProductTemplateId");
					this.OnProductTemplateIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShowOnHomePage", DbType="Bit NOT NULL")]
		public bool ShowOnHomePage
		{
			get
			{
				return this._ShowOnHomePage;
			}
			set
			{
				if ((this._ShowOnHomePage != value))
				{
					this.OnShowOnHomePageChanging(value);
					this.SendPropertyChanging();
					this._ShowOnHomePage = value;
					this.SendPropertyChanged("ShowOnHomePage");
					this.OnShowOnHomePageChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MetaKeywords", DbType="NVarChar(400)")]
		public string MetaKeywords
		{
			get
			{
				return this._MetaKeywords;
			}
			set
			{
				if ((this._MetaKeywords != value))
				{
					this.OnMetaKeywordsChanging(value);
					this.SendPropertyChanging();
					this._MetaKeywords = value;
					this.SendPropertyChanged("MetaKeywords");
					this.OnMetaKeywordsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MetaDescription", DbType="NVarChar(MAX)")]
		public string MetaDescription
		{
			get
			{
				return this._MetaDescription;
			}
			set
			{
				if ((this._MetaDescription != value))
				{
					this.OnMetaDescriptionChanging(value);
					this.SendPropertyChanging();
					this._MetaDescription = value;
					this.SendPropertyChanged("MetaDescription");
					this.OnMetaDescriptionChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MetaTitle", DbType="NVarChar(400)")]
		public string MetaTitle
		{
			get
			{
				return this._MetaTitle;
			}
			set
			{
				if ((this._MetaTitle != value))
				{
					this.OnMetaTitleChanging(value);
					this.SendPropertyChanging();
					this._MetaTitle = value;
					this.SendPropertyChanged("MetaTitle");
					this.OnMetaTitleChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AllowCustomerReviews", DbType="Bit NOT NULL")]
		public bool AllowCustomerReviews
		{
			get
			{
				return this._AllowCustomerReviews;
			}
			set
			{
				if ((this._AllowCustomerReviews != value))
				{
					this.OnAllowCustomerReviewsChanging(value);
					this.SendPropertyChanging();
					this._AllowCustomerReviews = value;
					this.SendPropertyChanged("AllowCustomerReviews");
					this.OnAllowCustomerReviewsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ApprovedRatingSum", DbType="Int NOT NULL")]
		public int ApprovedRatingSum
		{
			get
			{
				return this._ApprovedRatingSum;
			}
			set
			{
				if ((this._ApprovedRatingSum != value))
				{
					this.OnApprovedRatingSumChanging(value);
					this.SendPropertyChanging();
					this._ApprovedRatingSum = value;
					this.SendPropertyChanged("ApprovedRatingSum");
					this.OnApprovedRatingSumChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NotApprovedRatingSum", DbType="Int NOT NULL")]
		public int NotApprovedRatingSum
		{
			get
			{
				return this._NotApprovedRatingSum;
			}
			set
			{
				if ((this._NotApprovedRatingSum != value))
				{
					this.OnNotApprovedRatingSumChanging(value);
					this.SendPropertyChanging();
					this._NotApprovedRatingSum = value;
					this.SendPropertyChanged("NotApprovedRatingSum");
					this.OnNotApprovedRatingSumChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ApprovedTotalReviews", DbType="Int NOT NULL")]
		public int ApprovedTotalReviews
		{
			get
			{
				return this._ApprovedTotalReviews;
			}
			set
			{
				if ((this._ApprovedTotalReviews != value))
				{
					this.OnApprovedTotalReviewsChanging(value);
					this.SendPropertyChanging();
					this._ApprovedTotalReviews = value;
					this.SendPropertyChanged("ApprovedTotalReviews");
					this.OnApprovedTotalReviewsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NotApprovedTotalReviews", DbType="Int NOT NULL")]
		public int NotApprovedTotalReviews
		{
			get
			{
				return this._NotApprovedTotalReviews;
			}
			set
			{
				if ((this._NotApprovedTotalReviews != value))
				{
					this.OnNotApprovedTotalReviewsChanging(value);
					this.SendPropertyChanging();
					this._NotApprovedTotalReviews = value;
					this.SendPropertyChanged("NotApprovedTotalReviews");
					this.OnNotApprovedTotalReviewsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SubjectToAcl", DbType="Bit NOT NULL")]
		public bool SubjectToAcl
		{
			get
			{
				return this._SubjectToAcl;
			}
			set
			{
				if ((this._SubjectToAcl != value))
				{
					this.OnSubjectToAclChanging(value);
					this.SendPropertyChanging();
					this._SubjectToAcl = value;
					this.SendPropertyChanged("SubjectToAcl");
					this.OnSubjectToAclChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Published", DbType="Bit NOT NULL")]
		public bool Published
		{
			get
			{
				return this._Published;
			}
			set
			{
				if ((this._Published != value))
				{
					this.OnPublishedChanging(value);
					this.SendPropertyChanging();
					this._Published = value;
					this.SendPropertyChanged("Published");
					this.OnPublishedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Deleted", DbType="Bit NOT NULL")]
		public bool Deleted
		{
			get
			{
				return this._Deleted;
			}
			set
			{
				if ((this._Deleted != value))
				{
					this.OnDeletedChanging(value);
					this.SendPropertyChanging();
					this._Deleted = value;
					this.SendPropertyChanged("Deleted");
					this.OnDeletedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CreatedOnUtc", DbType="DateTime NOT NULL")]
		public System.DateTime CreatedOnUtc
		{
			get
			{
				return this._CreatedOnUtc;
			}
			set
			{
				if ((this._CreatedOnUtc != value))
				{
					this.OnCreatedOnUtcChanging(value);
					this.SendPropertyChanging();
					this._CreatedOnUtc = value;
					this.SendPropertyChanged("CreatedOnUtc");
					this.OnCreatedOnUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UpdatedOnUtc", DbType="DateTime NOT NULL")]
		public System.DateTime UpdatedOnUtc
		{
			get
			{
				return this._UpdatedOnUtc;
			}
			set
			{
				if ((this._UpdatedOnUtc != value))
				{
					this.OnUpdatedOnUtcChanging(value);
					this.SendPropertyChanging();
					this._UpdatedOnUtc = value;
					this.SendPropertyChanged("UpdatedOnUtc");
					this.OnUpdatedOnUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Product_Nop280_Product_SpecificationAttribute_Mapping", Storage="_Product_SpecificationAttribute_Mappings", ThisKey="Id", OtherKey="ProductId")]
		public EntitySet<Nop280_Product_SpecificationAttribute_Mapping> Nop280_Product_SpecificationAttribute_Mappings
		{
			get
			{
				return this._Product_SpecificationAttribute_Mappings;
			}
			set
			{
				this._Product_SpecificationAttribute_Mappings.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Product_Nop280_Product_Category_Mapping", Storage="_Product_Category_Mappings", ThisKey="Id", OtherKey="ProductId")]
		public EntitySet<Nop280_Product_Category_Mapping> Nop280_Product_Category_Mappings
		{
			get
			{
				return this._Product_Category_Mappings;
			}
			set
			{
				this._Product_Category_Mappings.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Product_Nop280_Product_Manufacturer_Mapping", Storage="_Product_Manufacturer_Mappings", ThisKey="Id", OtherKey="ProductId")]
		public EntitySet<Nop280_Product_Manufacturer_Mapping> Nop280_Product_Manufacturer_Mappings
		{
			get
			{
				return this._Product_Manufacturer_Mappings;
			}
			set
			{
				this._Product_Manufacturer_Mappings.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Product_Nop280_Product_ProductTag_Mapping", Storage="_Product_ProductTag_Mappings", ThisKey="Id", OtherKey="Product_Id")]
		public EntitySet<Nop280_Product_ProductTag_Mapping> Nop280_Product_ProductTag_Mappings
		{
			get
			{
				return this._Product_ProductTag_Mappings;
			}
			set
			{
				this._Product_ProductTag_Mappings.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Product_Nop280_Product_Picture_Mapping", Storage="_Product_Picture_Mappings", ThisKey="Id", OtherKey="ProductId")]
		public EntitySet<Nop280_Product_Picture_Mapping> Nop280_Product_Picture_Mappings
		{
			get
			{
				return this._Product_Picture_Mappings;
			}
			set
			{
				this._Product_Picture_Mappings.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Product_ProductVariant", Storage="_ProductVariants", ThisKey="Id", OtherKey="ProductId")]
		public EntitySet<Nop280_ProductVariant> Nop280_ProductVariants
		{
			get
			{
				return this._ProductVariants;
			}
			set
			{
				this._ProductVariants.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_Product_SpecificationAttribute_Mappings(Nop280_Product_SpecificationAttribute_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Product = this;
		}
		
		private void detach_Product_SpecificationAttribute_Mappings(Nop280_Product_SpecificationAttribute_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Product = null;
		}
		
		private void attach_Product_Category_Mappings(Nop280_Product_Category_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Product = this;
		}
		
		private void detach_Product_Category_Mappings(Nop280_Product_Category_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Product = null;
		}
		
		private void attach_Product_Manufacturer_Mappings(Nop280_Product_Manufacturer_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Product = this;
		}
		
		private void detach_Product_Manufacturer_Mappings(Nop280_Product_Manufacturer_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Product = null;
		}
		
		private void attach_Product_ProductTag_Mappings(Nop280_Product_ProductTag_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Product = this;
		}
		
		private void detach_Product_ProductTag_Mappings(Nop280_Product_ProductTag_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Product = null;
		}
		
		private void attach_Product_Picture_Mappings(Nop280_Product_Picture_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Product = this;
		}
		
		private void detach_Product_Picture_Mappings(Nop280_Product_Picture_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Product = null;
		}
		
		private void attach_ProductVariants(Nop280_ProductVariant entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Product = this;
		}
		
		private void detach_ProductVariants(Nop280_ProductVariant entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Product = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Product_SpecificationAttribute_Mapping")]
	public partial class Nop280_Product_SpecificationAttribute_Mapping : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _ProductId;
		
		private int _SpecificationAttributeOptionId;
		
		private string _CustomValue;
		
		private bool _AllowFiltering;
		
		private bool _ShowOnProductPage;
		
		private int _DisplayOrder;
		
		private EntityRef<Nop280_Product> _Product;
		
		private EntityRef<Nop280_SpecificationAttributeOption> _SpecificationAttributeOption;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnProductIdChanging(int value);
    partial void OnProductIdChanged();
    partial void OnSpecificationAttributeOptionIdChanging(int value);
    partial void OnSpecificationAttributeOptionIdChanged();
    partial void OnCustomValueChanging(string value);
    partial void OnCustomValueChanged();
    partial void OnAllowFilteringChanging(bool value);
    partial void OnAllowFilteringChanged();
    partial void OnShowOnProductPageChanging(bool value);
    partial void OnShowOnProductPageChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    #endregion
		
		public Nop280_Product_SpecificationAttribute_Mapping()
		{
			this._Product = default(EntityRef<Nop280_Product>);
			this._SpecificationAttributeOption = default(EntityRef<Nop280_SpecificationAttributeOption>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductId", DbType="Int NOT NULL")]
		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="_SpecificationAttributeOptionId", DbType="Int NOT NULL")]
		public int SpecificationAttributeOptionId
		{
			get
			{
				return this._SpecificationAttributeOptionId;
			}
			set
			{
				if ((this._SpecificationAttributeOptionId != value))
				{
					if (this._SpecificationAttributeOption.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnSpecificationAttributeOptionIdChanging(value);
					this.SendPropertyChanging();
					this._SpecificationAttributeOptionId = value;
					this.SendPropertyChanged("SpecificationAttributeOptionId");
					this.OnSpecificationAttributeOptionIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomValue", DbType="NVarChar(4000)")]
		public string CustomValue
		{
			get
			{
				return this._CustomValue;
			}
			set
			{
				if ((this._CustomValue != value))
				{
					this.OnCustomValueChanging(value);
					this.SendPropertyChanging();
					this._CustomValue = value;
					this.SendPropertyChanged("CustomValue");
					this.OnCustomValueChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AllowFiltering", DbType="Bit NOT NULL")]
		public bool AllowFiltering
		{
			get
			{
				return this._AllowFiltering;
			}
			set
			{
				if ((this._AllowFiltering != value))
				{
					this.OnAllowFilteringChanging(value);
					this.SendPropertyChanging();
					this._AllowFiltering = value;
					this.SendPropertyChanged("AllowFiltering");
					this.OnAllowFilteringChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShowOnProductPage", DbType="Bit NOT NULL")]
		public bool ShowOnProductPage
		{
			get
			{
				return this._ShowOnProductPage;
			}
			set
			{
				if ((this._ShowOnProductPage != value))
				{
					this.OnShowOnProductPageChanging(value);
					this.SendPropertyChanging();
					this._ShowOnProductPage = value;
					this.SendPropertyChanged("ShowOnProductPage");
					this.OnShowOnProductPageChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Product_Nop280_Product_SpecificationAttribute_Mapping", Storage="_Product", ThisKey="ProductId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Product Nop280_Product
		{
			get
			{
				return this._Product.Entity;
			}
			set
			{
				Nop280_Product previousValue = this._Product.Entity;
				if (((previousValue != value) 
							|| (this._Product.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Product.Entity = null;
						previousValue.Nop280_Product_SpecificationAttribute_Mappings.Remove(this);
					}
					this._Product.Entity = value;
					if ((value != null))
					{
						value.Nop280_Product_SpecificationAttribute_Mappings.Add(this);
						this._ProductId = value.Id;
					}
					else
					{
						this._ProductId = default(int);
					}
					this.SendPropertyChanged("Nop280_Product");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_SpecificationAttributeOption_Nop280_Product_SpecificationAttribute_Mapping" +
			"", Storage="_SpecificationAttributeOption", ThisKey="SpecificationAttributeOptionId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_SpecificationAttributeOption Nop280_SpecificationAttributeOption
		{
			get
			{
				return this._SpecificationAttributeOption.Entity;
			}
			set
			{
				Nop280_SpecificationAttributeOption previousValue = this._SpecificationAttributeOption.Entity;
				if (((previousValue != value) 
							|| (this._SpecificationAttributeOption.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._SpecificationAttributeOption.Entity = null;
						previousValue.Nop280_Product_SpecificationAttribute_Mappings.Remove(this);
					}
					this._SpecificationAttributeOption.Entity = value;
					if ((value != null))
					{
						value.Nop280_Product_SpecificationAttribute_Mappings.Add(this);
						this._SpecificationAttributeOptionId = value.Id;
					}
					else
					{
						this._SpecificationAttributeOptionId = default(int);
					}
					this.SendPropertyChanged("Nop280_SpecificationAttributeOption");
				}
			}
		}
		
		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.Product_Category_Mapping")]
	public partial class Nop280_Product_Category_Mapping : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _ProductId;
		
		private int _CategoryId;
		
		private bool _IsFeaturedProduct;
		
		private int _DisplayOrder;
		
		private EntityRef<Nop280_Product> _Product;
		
		private EntityRef<Nop280_Category> _Category;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnProductIdChanging(int value);
    partial void OnProductIdChanged();
    partial void OnCategoryIdChanging(int value);
    partial void OnCategoryIdChanged();
    partial void OnIsFeaturedProductChanging(bool value);
    partial void OnIsFeaturedProductChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    #endregion
		
		public Nop280_Product_Category_Mapping()
		{
			this._Product = default(EntityRef<Nop280_Product>);
			this._Category = default(EntityRef<Nop280_Category>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductId", DbType="Int NOT NULL")]
		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="_CategoryId", DbType="Int NOT NULL")]
		public 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="_IsFeaturedProduct", DbType="Bit NOT NULL")]
		public bool IsFeaturedProduct
		{
			get
			{
				return this._IsFeaturedProduct;
			}
			set
			{
				if ((this._IsFeaturedProduct != value))
				{
					this.OnIsFeaturedProductChanging(value);
					this.SendPropertyChanging();
					this._IsFeaturedProduct = value;
					this.SendPropertyChanged("IsFeaturedProduct");
					this.OnIsFeaturedProductChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Product_Nop280_Product_Category_Mapping", Storage="_Product", ThisKey="ProductId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Product Nop280_Product
		{
			get
			{
				return this._Product.Entity;
			}
			set
			{
				Nop280_Product previousValue = this._Product.Entity;
				if (((previousValue != value) 
							|| (this._Product.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Product.Entity = null;
						previousValue.Nop280_Product_Category_Mappings.Remove(this);
					}
					this._Product.Entity = value;
					if ((value != null))
					{
						value.Nop280_Product_Category_Mappings.Add(this);
						this._ProductId = value.Id;
					}
					else
					{
						this._ProductId = default(int);
					}
					this.SendPropertyChanged("Nop280_Product");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Category_Nop280_Product_Category_Mapping", Storage="_Category", ThisKey="CategoryId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Category Nop280_Category
		{
			get
			{
				return this._Category.Entity;
			}
			set
			{
				Nop280_Category previousValue = this._Category.Entity;
				if (((previousValue != value) 
							|| (this._Category.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Category.Entity = null;
						previousValue.Nop280_Product_Category_Mappings.Remove(this);
					}
					this._Category.Entity = value;
					if ((value != null))
					{
						value.Nop280_Product_Category_Mappings.Add(this);
						this._CategoryId = value.Id;
					}
					else
					{
						this._CategoryId = default(int);
					}
					this.SendPropertyChanged("Nop280_Category");
				}
			}
		}
		
		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.Product_Manufacturer_Mapping")]
	public partial class Nop280_Product_Manufacturer_Mapping : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _ProductId;
		
		private int _ManufacturerId;
		
		private bool _IsFeaturedProduct;
		
		private int _DisplayOrder;
		
		private EntityRef<Nop280_Product> _Product;
		
		private EntityRef<Nop280_Manufacturer> _Manufacturer;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnProductIdChanging(int value);
    partial void OnProductIdChanged();
    partial void OnManufacturerIdChanging(int value);
    partial void OnManufacturerIdChanged();
    partial void OnIsFeaturedProductChanging(bool value);
    partial void OnIsFeaturedProductChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    #endregion
		
		public Nop280_Product_Manufacturer_Mapping()
		{
			this._Product = default(EntityRef<Nop280_Product>);
			this._Manufacturer = default(EntityRef<Nop280_Manufacturer>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductId", DbType="Int NOT NULL")]
		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="_ManufacturerId", DbType="Int NOT NULL")]
		public int ManufacturerId
		{
			get
			{
				return this._ManufacturerId;
			}
			set
			{
				if ((this._ManufacturerId != value))
				{
					if (this._Manufacturer.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnManufacturerIdChanging(value);
					this.SendPropertyChanging();
					this._ManufacturerId = value;
					this.SendPropertyChanged("ManufacturerId");
					this.OnManufacturerIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsFeaturedProduct", DbType="Bit NOT NULL")]
		public bool IsFeaturedProduct
		{
			get
			{
				return this._IsFeaturedProduct;
			}
			set
			{
				if ((this._IsFeaturedProduct != value))
				{
					this.OnIsFeaturedProductChanging(value);
					this.SendPropertyChanging();
					this._IsFeaturedProduct = value;
					this.SendPropertyChanged("IsFeaturedProduct");
					this.OnIsFeaturedProductChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Product_Nop280_Product_Manufacturer_Mapping", Storage="_Product", ThisKey="ProductId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Product Nop280_Product
		{
			get
			{
				return this._Product.Entity;
			}
			set
			{
				Nop280_Product previousValue = this._Product.Entity;
				if (((previousValue != value) 
							|| (this._Product.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Product.Entity = null;
						previousValue.Nop280_Product_Manufacturer_Mappings.Remove(this);
					}
					this._Product.Entity = value;
					if ((value != null))
					{
						value.Nop280_Product_Manufacturer_Mappings.Add(this);
						this._ProductId = value.Id;
					}
					else
					{
						this._ProductId = default(int);
					}
					this.SendPropertyChanged("Nop280_Product");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Manufacturer_Nop280_Product_Manufacturer_Mapping", Storage="_Manufacturer", ThisKey="ManufacturerId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Manufacturer Nop280_Manufacturer
		{
			get
			{
				return this._Manufacturer.Entity;
			}
			set
			{
				Nop280_Manufacturer previousValue = this._Manufacturer.Entity;
				if (((previousValue != value) 
							|| (this._Manufacturer.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Manufacturer.Entity = null;
						previousValue.Nop280_Product_Manufacturer_Mappings.Remove(this);
					}
					this._Manufacturer.Entity = value;
					if ((value != null))
					{
						value.Nop280_Product_Manufacturer_Mappings.Add(this);
						this._ManufacturerId = value.Id;
					}
					else
					{
						this._ManufacturerId = default(int);
					}
					this.SendPropertyChanged("Nop280_Manufacturer");
				}
			}
		}
		
		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.Product_ProductTag_Mapping")]
	public partial class Nop280_Product_ProductTag_Mapping : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _ProductTag_Id;
		
		private int _Product_Id;
		
		private EntityRef<Nop280_Product> _Product;
		
		private EntityRef<Nop280_ProductTag> _ProductTag;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnProductTag_IdChanging(int value);
    partial void OnProductTag_IdChanged();
    partial void OnProduct_IdChanging(int value);
    partial void OnProduct_IdChanged();
    #endregion
		
		public Nop280_Product_ProductTag_Mapping()
		{
			this._Product = default(EntityRef<Nop280_Product>);
			this._ProductTag = default(EntityRef<Nop280_ProductTag>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductTag_Id", DbType="Int NOT NULL", IsPrimaryKey=true)]
		public int ProductTag_Id
		{
			get
			{
				return this._ProductTag_Id;
			}
			set
			{
				if ((this._ProductTag_Id != value))
				{
					if (this._ProductTag.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnProductTag_IdChanging(value);
					this.SendPropertyChanging();
					this._ProductTag_Id = value;
					this.SendPropertyChanged("ProductTag_Id");
					this.OnProductTag_IdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Product_Id", DbType="Int NOT NULL", IsPrimaryKey=true)]
		public int Product_Id
		{
			get
			{
				return this._Product_Id;
			}
			set
			{
				if ((this._Product_Id != value))
				{
					if (this._Product.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnProduct_IdChanging(value);
					this.SendPropertyChanging();
					this._Product_Id = value;
					this.SendPropertyChanged("Product_Id");
					this.OnProduct_IdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Product_Nop280_Product_ProductTag_Mapping", Storage="_Product", ThisKey="Product_Id", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Product Nop280_Product
		{
			get
			{
				return this._Product.Entity;
			}
			set
			{
				Nop280_Product previousValue = this._Product.Entity;
				if (((previousValue != value) 
							|| (this._Product.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Product.Entity = null;
						previousValue.Nop280_Product_ProductTag_Mappings.Remove(this);
					}
					this._Product.Entity = value;
					if ((value != null))
					{
						value.Nop280_Product_ProductTag_Mappings.Add(this);
						this._Product_Id = value.Id;
					}
					else
					{
						this._Product_Id = default(int);
					}
					this.SendPropertyChanged("Nop280_Product");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_ProductTag_Nop280_Product_ProductTag_Mapping", Storage="_ProductTag", ThisKey="ProductTag_Id", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_ProductTag Nop280_ProductTag
		{
			get
			{
				return this._ProductTag.Entity;
			}
			set
			{
				Nop280_ProductTag previousValue = this._ProductTag.Entity;
				if (((previousValue != value) 
							|| (this._ProductTag.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._ProductTag.Entity = null;
						previousValue.Nop280_Product_ProductTag_Mappings.Remove(this);
					}
					this._ProductTag.Entity = value;
					if ((value != null))
					{
						value.Nop280_Product_ProductTag_Mappings.Add(this);
						this._ProductTag_Id = value.Id;
					}
					else
					{
						this._ProductTag_Id = default(int);
					}
					this.SendPropertyChanged("Nop280_ProductTag");
				}
			}
		}
		
		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.ProductTag")]
	public partial class Nop280_ProductTag : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private string _Name;
		
		private int _ProductCount;
		
		private EntitySet<Nop280_Product_ProductTag_Mapping> _Product_ProductTag_Mappings;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnProductCountChanging(int value);
    partial void OnProductCountChanged();
    #endregion
		
		public Nop280_ProductTag()
		{
			this._Product_ProductTag_Mappings = new EntitySet<Nop280_Product_ProductTag_Mapping>(new Action<Nop280_Product_ProductTag_Mapping>(this.attach_Product_ProductTag_Mappings), new Action<Nop280_Product_ProductTag_Mapping>(this.detach_Product_ProductTag_Mappings));
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(400) NOT NULL", CanBeNull=false)]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductCount", DbType="Int NOT NULL")]
		public int ProductCount
		{
			get
			{
				return this._ProductCount;
			}
			set
			{
				if ((this._ProductCount != value))
				{
					this.OnProductCountChanging(value);
					this.SendPropertyChanging();
					this._ProductCount = value;
					this.SendPropertyChanged("ProductCount");
					this.OnProductCountChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_ProductTag_Nop280_Product_ProductTag_Mapping", Storage="_Product_ProductTag_Mappings", ThisKey="Id", OtherKey="ProductTag_Id")]
		public EntitySet<Nop280_Product_ProductTag_Mapping> Nop280_Product_ProductTag_Mappings
		{
			get
			{
				return this._Product_ProductTag_Mappings;
			}
			set
			{
				this._Product_ProductTag_Mappings.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_Product_ProductTag_Mappings(Nop280_Product_ProductTag_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductTag = this;
		}
		
		private void detach_Product_ProductTag_Mappings(Nop280_Product_ProductTag_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductTag = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Product_Picture_Mapping")]
	public partial class Nop280_Product_Picture_Mapping : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _ProductId;
		
		private int _PictureId;
		
		private int _DisplayOrder;
		
		private EntityRef<Nop280_Product> _Product;
		
		private EntityRef<Nop280_Picture> _Picture;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnProductIdChanging(int value);
    partial void OnProductIdChanged();
    partial void OnPictureIdChanging(int value);
    partial void OnPictureIdChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    #endregion
		
		public Nop280_Product_Picture_Mapping()
		{
			this._Product = default(EntityRef<Nop280_Product>);
			this._Picture = default(EntityRef<Nop280_Picture>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductId", DbType="Int NOT NULL")]
		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="_PictureId", DbType="Int NOT NULL")]
		public int PictureId
		{
			get
			{
				return this._PictureId;
			}
			set
			{
				if ((this._PictureId != value))
				{
					if (this._Picture.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnPictureIdChanging(value);
					this.SendPropertyChanging();
					this._PictureId = value;
					this.SendPropertyChanged("PictureId");
					this.OnPictureIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Product_Nop280_Product_Picture_Mapping", Storage="_Product", ThisKey="ProductId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Product Nop280_Product
		{
			get
			{
				return this._Product.Entity;
			}
			set
			{
				Nop280_Product previousValue = this._Product.Entity;
				if (((previousValue != value) 
							|| (this._Product.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Product.Entity = null;
						previousValue.Nop280_Product_Picture_Mappings.Remove(this);
					}
					this._Product.Entity = value;
					if ((value != null))
					{
						value.Nop280_Product_Picture_Mappings.Add(this);
						this._ProductId = value.Id;
					}
					else
					{
						this._ProductId = default(int);
					}
					this.SendPropertyChanged("Nop280_Product");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Picture_Nop280_Product_Picture_Mapping", Storage="_Picture", ThisKey="PictureId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Picture Nop280_Picture
		{
			get
			{
				return this._Picture.Entity;
			}
			set
			{
				Nop280_Picture previousValue = this._Picture.Entity;
				if (((previousValue != value) 
							|| (this._Picture.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Picture.Entity = null;
						previousValue.Nop280_Product_Picture_Mappings.Remove(this);
					}
					this._Picture.Entity = value;
					if ((value != null))
					{
						value.Nop280_Product_Picture_Mappings.Add(this);
						this._PictureId = value.Id;
					}
					else
					{
						this._PictureId = default(int);
					}
					this.SendPropertyChanged("Nop280_Picture");
				}
			}
		}
		
		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.Picture")]
	public partial class Nop280_Picture : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private System.Data.Linq.Binary _PictureBinary;
		
		private string _MimeType;
		
		private string _SeoFilename;
		
		private bool _IsNew;
		
		private EntitySet<Nop280_Product_Picture_Mapping> _Product_Picture_Mappings;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnPictureBinaryChanging(System.Data.Linq.Binary value);
    partial void OnPictureBinaryChanged();
    partial void OnMimeTypeChanging(string value);
    partial void OnMimeTypeChanged();
    partial void OnSeoFilenameChanging(string value);
    partial void OnSeoFilenameChanged();
    partial void OnIsNewChanging(bool value);
    partial void OnIsNewChanged();
    #endregion
		
		public Nop280_Picture()
		{
			this._Product_Picture_Mappings = new EntitySet<Nop280_Product_Picture_Mapping>(new Action<Nop280_Product_Picture_Mapping>(this.attach_Product_Picture_Mappings), new Action<Nop280_Product_Picture_Mapping>(this.detach_Product_Picture_Mappings));
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PictureBinary", DbType="VarBinary(MAX)", UpdateCheck=UpdateCheck.Never)]
		public System.Data.Linq.Binary PictureBinary
		{
			get
			{
				return this._PictureBinary;
			}
			set
			{
				if ((this._PictureBinary != value))
				{
					this.OnPictureBinaryChanging(value);
					this.SendPropertyChanging();
					this._PictureBinary = value;
					this.SendPropertyChanged("PictureBinary");
					this.OnPictureBinaryChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MimeType", DbType="NVarChar(40) NOT NULL", CanBeNull=false)]
		public string MimeType
		{
			get
			{
				return this._MimeType;
			}
			set
			{
				if ((this._MimeType != value))
				{
					this.OnMimeTypeChanging(value);
					this.SendPropertyChanging();
					this._MimeType = value;
					this.SendPropertyChanged("MimeType");
					this.OnMimeTypeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SeoFilename", DbType="NVarChar(300)")]
		public string SeoFilename
		{
			get
			{
				return this._SeoFilename;
			}
			set
			{
				if ((this._SeoFilename != value))
				{
					this.OnSeoFilenameChanging(value);
					this.SendPropertyChanging();
					this._SeoFilename = value;
					this.SendPropertyChanged("SeoFilename");
					this.OnSeoFilenameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsNew", DbType="Bit NOT NULL")]
		public bool IsNew
		{
			get
			{
				return this._IsNew;
			}
			set
			{
				if ((this._IsNew != value))
				{
					this.OnIsNewChanging(value);
					this.SendPropertyChanging();
					this._IsNew = value;
					this.SendPropertyChanged("IsNew");
					this.OnIsNewChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Picture_Nop280_Product_Picture_Mapping", Storage="_Product_Picture_Mappings", ThisKey="Id", OtherKey="PictureId")]
		public EntitySet<Nop280_Product_Picture_Mapping> Nop280_Product_Picture_Mappings
		{
			get
			{
				return this._Product_Picture_Mappings;
			}
			set
			{
				this._Product_Picture_Mappings.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_Product_Picture_Mappings(Nop280_Product_Picture_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Picture = this;
		}
		
		private void detach_Product_Picture_Mappings(Nop280_Product_Picture_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Picture = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.ProductVariant")]
	public partial class Nop280_ProductVariant : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _ProductId;
		
		private string _Name;
		
		private string _Sku;
		
		private string _Description;
		
		private string _AdminComment;
		
		private string _ManufacturerPartNumber;
		
		private string _Gtin;
		
		private bool _IsGiftCard;
		
		private int _GiftCardTypeId;
		
		private bool _RequireOtherProducts;
		
		private string _RequiredProductVariantIds;
		
		private bool _AutomaticallyAddRequiredProductVariants;
		
		private bool _IsDownload;
		
		private int _DownloadId;
		
		private bool _UnlimitedDownloads;
		
		private int _MaxNumberOfDownloads;
		
		private System.Nullable<int> _DownloadExpirationDays;
		
		private int _DownloadActivationTypeId;
		
		private bool _HasSampleDownload;
		
		private int _SampleDownloadId;
		
		private bool _HasUserAgreement;
		
		private string _UserAgreementText;
		
		private bool _IsRecurring;
		
		private int _RecurringCycleLength;
		
		private int _RecurringCyclePeriodId;
		
		private int _RecurringTotalCycles;
		
		private bool _IsShipEnabled;
		
		private bool _IsFreeShipping;
		
		private decimal _AdditionalShippingCharge;
		
		private bool _IsTaxExempt;
		
		private int _TaxCategoryId;
		
		private int _ManageInventoryMethodId;
		
		private int _StockQuantity;
		
		private bool _DisplayStockAvailability;
		
		private bool _DisplayStockQuantity;
		
		private int _MinStockQuantity;
		
		private int _LowStockActivityId;
		
		private int _NotifyAdminForQuantityBelow;
		
		private int _BackorderModeId;
		
		private bool _AllowBackInStockSubscriptions;
		
		private int _OrderMinimumQuantity;
		
		private int _OrderMaximumQuantity;
		
		private string _AllowedQuantities;
		
		private bool _DisableBuyButton;
		
		private bool _DisableWishlistButton;
		
		private bool _AvailableForPreOrder;
		
		private bool _CallForPrice;
		
		private decimal _Price;
		
		private decimal _OldPrice;
		
		private decimal _ProductCost;
		
		private System.Nullable<decimal> _SpecialPrice;
		
		private System.Nullable<System.DateTime> _SpecialPriceStartDateTimeUtc;
		
		private System.Nullable<System.DateTime> _SpecialPriceEndDateTimeUtc;
		
		private bool _CustomerEntersPrice;
		
		private decimal _MinimumCustomerEnteredPrice;
		
		private decimal _MaximumCustomerEnteredPrice;
		
		private bool _HasTierPrices;
		
		private bool _HasDiscountsApplied;
		
		private decimal _Weight;
		
		private decimal _Length;
		
		private decimal _Width;
		
		private decimal _Height;
		
		private int _PictureId;
		
		private System.Nullable<System.DateTime> _AvailableStartDateTimeUtc;
		
		private System.Nullable<System.DateTime> _AvailableEndDateTimeUtc;
		
		private bool _Published;
		
		private bool _Deleted;
		
		private int _DisplayOrder;
		
		private System.DateTime _CreatedOnUtc;
		
		private System.DateTime _UpdatedOnUtc;
		
		private EntitySet<Nop280_ProductVariant_ProductAttribute_Mapping> _ProductVariant_ProductAttribute_Mappings;
		
		private EntitySet<Nop280_ProductVariantAttributeCombination> _ProductVariantAttributeCombinations;
		
		private EntitySet<Nop280_TierPrice> _TierPrices;
		
		private EntitySet<Nop280_OrderProductVariant> _OrderProductVariants;
		
		private EntityRef<Nop280_Product> _Product;
		
		private EntityRef<Nop280_TaxCategory> _TaxCategory;
		
		private EntityRef<Nop280_Download> _Download;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnProductIdChanging(int value);
    partial void OnProductIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnSkuChanging(string value);
    partial void OnSkuChanged();
    partial void OnDescriptionChanging(string value);
    partial void OnDescriptionChanged();
    partial void OnAdminCommentChanging(string value);
    partial void OnAdminCommentChanged();
    partial void OnManufacturerPartNumberChanging(string value);
    partial void OnManufacturerPartNumberChanged();
    partial void OnGtinChanging(string value);
    partial void OnGtinChanged();
    partial void OnIsGiftCardChanging(bool value);
    partial void OnIsGiftCardChanged();
    partial void OnGiftCardTypeIdChanging(int value);
    partial void OnGiftCardTypeIdChanged();
    partial void OnRequireOtherProductsChanging(bool value);
    partial void OnRequireOtherProductsChanged();
    partial void OnRequiredProductVariantIdsChanging(string value);
    partial void OnRequiredProductVariantIdsChanged();
    partial void OnAutomaticallyAddRequiredProductVariantsChanging(bool value);
    partial void OnAutomaticallyAddRequiredProductVariantsChanged();
    partial void OnIsDownloadChanging(bool value);
    partial void OnIsDownloadChanged();
    partial void OnDownloadIdChanging(int value);
    partial void OnDownloadIdChanged();
    partial void OnUnlimitedDownloadsChanging(bool value);
    partial void OnUnlimitedDownloadsChanged();
    partial void OnMaxNumberOfDownloadsChanging(int value);
    partial void OnMaxNumberOfDownloadsChanged();
    partial void OnDownloadExpirationDaysChanging(System.Nullable<int> value);
    partial void OnDownloadExpirationDaysChanged();
    partial void OnDownloadActivationTypeIdChanging(int value);
    partial void OnDownloadActivationTypeIdChanged();
    partial void OnHasSampleDownloadChanging(bool value);
    partial void OnHasSampleDownloadChanged();
    partial void OnSampleDownloadIdChanging(int value);
    partial void OnSampleDownloadIdChanged();
    partial void OnHasUserAgreementChanging(bool value);
    partial void OnHasUserAgreementChanged();
    partial void OnUserAgreementTextChanging(string value);
    partial void OnUserAgreementTextChanged();
    partial void OnIsRecurringChanging(bool value);
    partial void OnIsRecurringChanged();
    partial void OnRecurringCycleLengthChanging(int value);
    partial void OnRecurringCycleLengthChanged();
    partial void OnRecurringCyclePeriodIdChanging(int value);
    partial void OnRecurringCyclePeriodIdChanged();
    partial void OnRecurringTotalCyclesChanging(int value);
    partial void OnRecurringTotalCyclesChanged();
    partial void OnIsShipEnabledChanging(bool value);
    partial void OnIsShipEnabledChanged();
    partial void OnIsFreeShippingChanging(bool value);
    partial void OnIsFreeShippingChanged();
    partial void OnAdditionalShippingChargeChanging(decimal value);
    partial void OnAdditionalShippingChargeChanged();
    partial void OnIsTaxExemptChanging(bool value);
    partial void OnIsTaxExemptChanged();
    partial void OnTaxCategoryIdChanging(int value);
    partial void OnTaxCategoryIdChanged();
    partial void OnManageInventoryMethodIdChanging(int value);
    partial void OnManageInventoryMethodIdChanged();
    partial void OnStockQuantityChanging(int value);
    partial void OnStockQuantityChanged();
    partial void OnDisplayStockAvailabilityChanging(bool value);
    partial void OnDisplayStockAvailabilityChanged();
    partial void OnDisplayStockQuantityChanging(bool value);
    partial void OnDisplayStockQuantityChanged();
    partial void OnMinStockQuantityChanging(int value);
    partial void OnMinStockQuantityChanged();
    partial void OnLowStockActivityIdChanging(int value);
    partial void OnLowStockActivityIdChanged();
    partial void OnNotifyAdminForQuantityBelowChanging(int value);
    partial void OnNotifyAdminForQuantityBelowChanged();
    partial void OnBackorderModeIdChanging(int value);
    partial void OnBackorderModeIdChanged();
    partial void OnAllowBackInStockSubscriptionsChanging(bool value);
    partial void OnAllowBackInStockSubscriptionsChanged();
    partial void OnOrderMinimumQuantityChanging(int value);
    partial void OnOrderMinimumQuantityChanged();
    partial void OnOrderMaximumQuantityChanging(int value);
    partial void OnOrderMaximumQuantityChanged();
    partial void OnAllowedQuantitiesChanging(string value);
    partial void OnAllowedQuantitiesChanged();
    partial void OnDisableBuyButtonChanging(bool value);
    partial void OnDisableBuyButtonChanged();
    partial void OnDisableWishlistButtonChanging(bool value);
    partial void OnDisableWishlistButtonChanged();
    partial void OnAvailableForPreOrderChanging(bool value);
    partial void OnAvailableForPreOrderChanged();
    partial void OnCallForPriceChanging(bool value);
    partial void OnCallForPriceChanged();
    partial void OnPriceChanging(decimal value);
    partial void OnPriceChanged();
    partial void OnOldPriceChanging(decimal value);
    partial void OnOldPriceChanged();
    partial void OnProductCostChanging(decimal value);
    partial void OnProductCostChanged();
    partial void OnSpecialPriceChanging(System.Nullable<decimal> value);
    partial void OnSpecialPriceChanged();
    partial void OnSpecialPriceStartDateTimeUtcChanging(System.Nullable<System.DateTime> value);
    partial void OnSpecialPriceStartDateTimeUtcChanged();
    partial void OnSpecialPriceEndDateTimeUtcChanging(System.Nullable<System.DateTime> value);
    partial void OnSpecialPriceEndDateTimeUtcChanged();
    partial void OnCustomerEntersPriceChanging(bool value);
    partial void OnCustomerEntersPriceChanged();
    partial void OnMinimumCustomerEnteredPriceChanging(decimal value);
    partial void OnMinimumCustomerEnteredPriceChanged();
    partial void OnMaximumCustomerEnteredPriceChanging(decimal value);
    partial void OnMaximumCustomerEnteredPriceChanged();
    partial void OnHasTierPricesChanging(bool value);
    partial void OnHasTierPricesChanged();
    partial void OnHasDiscountsAppliedChanging(bool value);
    partial void OnHasDiscountsAppliedChanged();
    partial void OnWeightChanging(decimal value);
    partial void OnWeightChanged();
    partial void OnLengthChanging(decimal value);
    partial void OnLengthChanged();
    partial void OnWidthChanging(decimal value);
    partial void OnWidthChanged();
    partial void OnHeightChanging(decimal value);
    partial void OnHeightChanged();
    partial void OnPictureIdChanging(int value);
    partial void OnPictureIdChanged();
    partial void OnAvailableStartDateTimeUtcChanging(System.Nullable<System.DateTime> value);
    partial void OnAvailableStartDateTimeUtcChanged();
    partial void OnAvailableEndDateTimeUtcChanging(System.Nullable<System.DateTime> value);
    partial void OnAvailableEndDateTimeUtcChanged();
    partial void OnPublishedChanging(bool value);
    partial void OnPublishedChanged();
    partial void OnDeletedChanging(bool value);
    partial void OnDeletedChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    partial void OnCreatedOnUtcChanging(System.DateTime value);
    partial void OnCreatedOnUtcChanged();
    partial void OnUpdatedOnUtcChanging(System.DateTime value);
    partial void OnUpdatedOnUtcChanged();
    #endregion
		
		public Nop280_ProductVariant()
		{
			this._ProductVariant_ProductAttribute_Mappings = new EntitySet<Nop280_ProductVariant_ProductAttribute_Mapping>(new Action<Nop280_ProductVariant_ProductAttribute_Mapping>(this.attach_ProductVariant_ProductAttribute_Mappings), new Action<Nop280_ProductVariant_ProductAttribute_Mapping>(this.detach_ProductVariant_ProductAttribute_Mappings));
			this._ProductVariantAttributeCombinations = new EntitySet<Nop280_ProductVariantAttributeCombination>(new Action<Nop280_ProductVariantAttributeCombination>(this.attach_ProductVariantAttributeCombinations), new Action<Nop280_ProductVariantAttributeCombination>(this.detach_ProductVariantAttributeCombinations));
			this._TierPrices = new EntitySet<Nop280_TierPrice>(new Action<Nop280_TierPrice>(this.attach_TierPrices), new Action<Nop280_TierPrice>(this.detach_TierPrices));
			this._OrderProductVariants = new EntitySet<Nop280_OrderProductVariant>(new Action<Nop280_OrderProductVariant>(this.attach_OrderProductVariants), new Action<Nop280_OrderProductVariant>(this.detach_OrderProductVariants));
			this._Product = default(EntityRef<Nop280_Product>);
			this._TaxCategory = default(EntityRef<Nop280_TaxCategory>);
			this._Download = default(EntityRef<Nop280_Download>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductId", DbType="Int NOT NULL")]
		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="_Name", DbType="NVarChar(400)")]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Sku", DbType="NVarChar(400)")]
		public string Sku
		{
			get
			{
				return this._Sku;
			}
			set
			{
				if ((this._Sku != value))
				{
					this.OnSkuChanging(value);
					this.SendPropertyChanging();
					this._Sku = value;
					this.SendPropertyChanged("Sku");
					this.OnSkuChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Description", DbType="NVarChar(MAX)")]
		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="_AdminComment", DbType="NVarChar(MAX)")]
		public string AdminComment
		{
			get
			{
				return this._AdminComment;
			}
			set
			{
				if ((this._AdminComment != value))
				{
					this.OnAdminCommentChanging(value);
					this.SendPropertyChanging();
					this._AdminComment = value;
					this.SendPropertyChanged("AdminComment");
					this.OnAdminCommentChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ManufacturerPartNumber", DbType="NVarChar(400)")]
		public string ManufacturerPartNumber
		{
			get
			{
				return this._ManufacturerPartNumber;
			}
			set
			{
				if ((this._ManufacturerPartNumber != value))
				{
					this.OnManufacturerPartNumberChanging(value);
					this.SendPropertyChanging();
					this._ManufacturerPartNumber = value;
					this.SendPropertyChanged("ManufacturerPartNumber");
					this.OnManufacturerPartNumberChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Gtin", DbType="NVarChar(400)")]
		public string Gtin
		{
			get
			{
				return this._Gtin;
			}
			set
			{
				if ((this._Gtin != value))
				{
					this.OnGtinChanging(value);
					this.SendPropertyChanging();
					this._Gtin = value;
					this.SendPropertyChanged("Gtin");
					this.OnGtinChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsGiftCard", DbType="Bit NOT NULL")]
		public bool IsGiftCard
		{
			get
			{
				return this._IsGiftCard;
			}
			set
			{
				if ((this._IsGiftCard != value))
				{
					this.OnIsGiftCardChanging(value);
					this.SendPropertyChanging();
					this._IsGiftCard = value;
					this.SendPropertyChanged("IsGiftCard");
					this.OnIsGiftCardChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_GiftCardTypeId", DbType="Int NOT NULL")]
		public int GiftCardTypeId
		{
			get
			{
				return this._GiftCardTypeId;
			}
			set
			{
				if ((this._GiftCardTypeId != value))
				{
					this.OnGiftCardTypeIdChanging(value);
					this.SendPropertyChanging();
					this._GiftCardTypeId = value;
					this.SendPropertyChanged("GiftCardTypeId");
					this.OnGiftCardTypeIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RequireOtherProducts", DbType="Bit NOT NULL")]
		public bool RequireOtherProducts
		{
			get
			{
				return this._RequireOtherProducts;
			}
			set
			{
				if ((this._RequireOtherProducts != value))
				{
					this.OnRequireOtherProductsChanging(value);
					this.SendPropertyChanging();
					this._RequireOtherProducts = value;
					this.SendPropertyChanged("RequireOtherProducts");
					this.OnRequireOtherProductsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RequiredProductVariantIds", DbType="NVarChar(1000)")]
		public string RequiredProductVariantIds
		{
			get
			{
				return this._RequiredProductVariantIds;
			}
			set
			{
				if ((this._RequiredProductVariantIds != value))
				{
					this.OnRequiredProductVariantIdsChanging(value);
					this.SendPropertyChanging();
					this._RequiredProductVariantIds = value;
					this.SendPropertyChanged("RequiredProductVariantIds");
					this.OnRequiredProductVariantIdsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AutomaticallyAddRequiredProductVariants", DbType="Bit NOT NULL")]
		public bool AutomaticallyAddRequiredProductVariants
		{
			get
			{
				return this._AutomaticallyAddRequiredProductVariants;
			}
			set
			{
				if ((this._AutomaticallyAddRequiredProductVariants != value))
				{
					this.OnAutomaticallyAddRequiredProductVariantsChanging(value);
					this.SendPropertyChanging();
					this._AutomaticallyAddRequiredProductVariants = value;
					this.SendPropertyChanged("AutomaticallyAddRequiredProductVariants");
					this.OnAutomaticallyAddRequiredProductVariantsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsDownload", DbType="Bit NOT NULL")]
		public bool IsDownload
		{
			get
			{
				return this._IsDownload;
			}
			set
			{
				if ((this._IsDownload != value))
				{
					this.OnIsDownloadChanging(value);
					this.SendPropertyChanging();
					this._IsDownload = value;
					this.SendPropertyChanged("IsDownload");
					this.OnIsDownloadChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DownloadId", DbType="Int NOT NULL")]
		public int DownloadId
		{
			get
			{
				return this._DownloadId;
			}
			set
			{
				if ((this._DownloadId != value))
				{
					if (this._Download.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnDownloadIdChanging(value);
					this.SendPropertyChanging();
					this._DownloadId = value;
					this.SendPropertyChanged("DownloadId");
					this.OnDownloadIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnlimitedDownloads", DbType="Bit NOT NULL")]
		public bool UnlimitedDownloads
		{
			get
			{
				return this._UnlimitedDownloads;
			}
			set
			{
				if ((this._UnlimitedDownloads != value))
				{
					this.OnUnlimitedDownloadsChanging(value);
					this.SendPropertyChanging();
					this._UnlimitedDownloads = value;
					this.SendPropertyChanged("UnlimitedDownloads");
					this.OnUnlimitedDownloadsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MaxNumberOfDownloads", DbType="Int NOT NULL")]
		public int MaxNumberOfDownloads
		{
			get
			{
				return this._MaxNumberOfDownloads;
			}
			set
			{
				if ((this._MaxNumberOfDownloads != value))
				{
					this.OnMaxNumberOfDownloadsChanging(value);
					this.SendPropertyChanging();
					this._MaxNumberOfDownloads = value;
					this.SendPropertyChanged("MaxNumberOfDownloads");
					this.OnMaxNumberOfDownloadsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DownloadExpirationDays", DbType="Int")]
		public System.Nullable<int> DownloadExpirationDays
		{
			get
			{
				return this._DownloadExpirationDays;
			}
			set
			{
				if ((this._DownloadExpirationDays != value))
				{
					this.OnDownloadExpirationDaysChanging(value);
					this.SendPropertyChanging();
					this._DownloadExpirationDays = value;
					this.SendPropertyChanged("DownloadExpirationDays");
					this.OnDownloadExpirationDaysChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DownloadActivationTypeId", DbType="Int NOT NULL")]
		public int DownloadActivationTypeId
		{
			get
			{
				return this._DownloadActivationTypeId;
			}
			set
			{
				if ((this._DownloadActivationTypeId != value))
				{
					this.OnDownloadActivationTypeIdChanging(value);
					this.SendPropertyChanging();
					this._DownloadActivationTypeId = value;
					this.SendPropertyChanged("DownloadActivationTypeId");
					this.OnDownloadActivationTypeIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_HasSampleDownload", DbType="Bit NOT NULL")]
		public bool HasSampleDownload
		{
			get
			{
				return this._HasSampleDownload;
			}
			set
			{
				if ((this._HasSampleDownload != value))
				{
					this.OnHasSampleDownloadChanging(value);
					this.SendPropertyChanging();
					this._HasSampleDownload = value;
					this.SendPropertyChanged("HasSampleDownload");
					this.OnHasSampleDownloadChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SampleDownloadId", DbType="Int NOT NULL")]
		public int SampleDownloadId
		{
			get
			{
				return this._SampleDownloadId;
			}
			set
			{
				if ((this._SampleDownloadId != value))
				{
					this.OnSampleDownloadIdChanging(value);
					this.SendPropertyChanging();
					this._SampleDownloadId = value;
					this.SendPropertyChanged("SampleDownloadId");
					this.OnSampleDownloadIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_HasUserAgreement", DbType="Bit NOT NULL")]
		public bool HasUserAgreement
		{
			get
			{
				return this._HasUserAgreement;
			}
			set
			{
				if ((this._HasUserAgreement != value))
				{
					this.OnHasUserAgreementChanging(value);
					this.SendPropertyChanging();
					this._HasUserAgreement = value;
					this.SendPropertyChanged("HasUserAgreement");
					this.OnHasUserAgreementChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserAgreementText", DbType="NVarChar(MAX)")]
		public string UserAgreementText
		{
			get
			{
				return this._UserAgreementText;
			}
			set
			{
				if ((this._UserAgreementText != value))
				{
					this.OnUserAgreementTextChanging(value);
					this.SendPropertyChanging();
					this._UserAgreementText = value;
					this.SendPropertyChanged("UserAgreementText");
					this.OnUserAgreementTextChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsRecurring", DbType="Bit NOT NULL")]
		public bool IsRecurring
		{
			get
			{
				return this._IsRecurring;
			}
			set
			{
				if ((this._IsRecurring != value))
				{
					this.OnIsRecurringChanging(value);
					this.SendPropertyChanging();
					this._IsRecurring = value;
					this.SendPropertyChanged("IsRecurring");
					this.OnIsRecurringChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RecurringCycleLength", DbType="Int NOT NULL")]
		public int RecurringCycleLength
		{
			get
			{
				return this._RecurringCycleLength;
			}
			set
			{
				if ((this._RecurringCycleLength != value))
				{
					this.OnRecurringCycleLengthChanging(value);
					this.SendPropertyChanging();
					this._RecurringCycleLength = value;
					this.SendPropertyChanged("RecurringCycleLength");
					this.OnRecurringCycleLengthChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RecurringCyclePeriodId", DbType="Int NOT NULL")]
		public int RecurringCyclePeriodId
		{
			get
			{
				return this._RecurringCyclePeriodId;
			}
			set
			{
				if ((this._RecurringCyclePeriodId != value))
				{
					this.OnRecurringCyclePeriodIdChanging(value);
					this.SendPropertyChanging();
					this._RecurringCyclePeriodId = value;
					this.SendPropertyChanged("RecurringCyclePeriodId");
					this.OnRecurringCyclePeriodIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RecurringTotalCycles", DbType="Int NOT NULL")]
		public int RecurringTotalCycles
		{
			get
			{
				return this._RecurringTotalCycles;
			}
			set
			{
				if ((this._RecurringTotalCycles != value))
				{
					this.OnRecurringTotalCyclesChanging(value);
					this.SendPropertyChanging();
					this._RecurringTotalCycles = value;
					this.SendPropertyChanged("RecurringTotalCycles");
					this.OnRecurringTotalCyclesChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsShipEnabled", DbType="Bit NOT NULL")]
		public bool IsShipEnabled
		{
			get
			{
				return this._IsShipEnabled;
			}
			set
			{
				if ((this._IsShipEnabled != value))
				{
					this.OnIsShipEnabledChanging(value);
					this.SendPropertyChanging();
					this._IsShipEnabled = value;
					this.SendPropertyChanged("IsShipEnabled");
					this.OnIsShipEnabledChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsFreeShipping", DbType="Bit NOT NULL")]
		public bool IsFreeShipping
		{
			get
			{
				return this._IsFreeShipping;
			}
			set
			{
				if ((this._IsFreeShipping != value))
				{
					this.OnIsFreeShippingChanging(value);
					this.SendPropertyChanging();
					this._IsFreeShipping = value;
					this.SendPropertyChanged("IsFreeShipping");
					this.OnIsFreeShippingChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AdditionalShippingCharge", DbType="Decimal(18,4) NOT NULL")]
		public decimal AdditionalShippingCharge
		{
			get
			{
				return this._AdditionalShippingCharge;
			}
			set
			{
				if ((this._AdditionalShippingCharge != value))
				{
					this.OnAdditionalShippingChargeChanging(value);
					this.SendPropertyChanging();
					this._AdditionalShippingCharge = value;
					this.SendPropertyChanged("AdditionalShippingCharge");
					this.OnAdditionalShippingChargeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsTaxExempt", DbType="Bit NOT NULL")]
		public bool IsTaxExempt
		{
			get
			{
				return this._IsTaxExempt;
			}
			set
			{
				if ((this._IsTaxExempt != value))
				{
					this.OnIsTaxExemptChanging(value);
					this.SendPropertyChanging();
					this._IsTaxExempt = value;
					this.SendPropertyChanged("IsTaxExempt");
					this.OnIsTaxExemptChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TaxCategoryId", DbType="Int NOT NULL")]
		public int TaxCategoryId
		{
			get
			{
				return this._TaxCategoryId;
			}
			set
			{
				if ((this._TaxCategoryId != value))
				{
					if (this._TaxCategory.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnTaxCategoryIdChanging(value);
					this.SendPropertyChanging();
					this._TaxCategoryId = value;
					this.SendPropertyChanged("TaxCategoryId");
					this.OnTaxCategoryIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ManageInventoryMethodId", DbType="Int NOT NULL")]
		public int ManageInventoryMethodId
		{
			get
			{
				return this._ManageInventoryMethodId;
			}
			set
			{
				if ((this._ManageInventoryMethodId != value))
				{
					this.OnManageInventoryMethodIdChanging(value);
					this.SendPropertyChanging();
					this._ManageInventoryMethodId = value;
					this.SendPropertyChanged("ManageInventoryMethodId");
					this.OnManageInventoryMethodIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StockQuantity", DbType="Int NOT NULL")]
		public int StockQuantity
		{
			get
			{
				return this._StockQuantity;
			}
			set
			{
				if ((this._StockQuantity != value))
				{
					this.OnStockQuantityChanging(value);
					this.SendPropertyChanging();
					this._StockQuantity = value;
					this.SendPropertyChanged("StockQuantity");
					this.OnStockQuantityChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayStockAvailability", DbType="Bit NOT NULL")]
		public bool DisplayStockAvailability
		{
			get
			{
				return this._DisplayStockAvailability;
			}
			set
			{
				if ((this._DisplayStockAvailability != value))
				{
					this.OnDisplayStockAvailabilityChanging(value);
					this.SendPropertyChanging();
					this._DisplayStockAvailability = value;
					this.SendPropertyChanged("DisplayStockAvailability");
					this.OnDisplayStockAvailabilityChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayStockQuantity", DbType="Bit NOT NULL")]
		public bool DisplayStockQuantity
		{
			get
			{
				return this._DisplayStockQuantity;
			}
			set
			{
				if ((this._DisplayStockQuantity != value))
				{
					this.OnDisplayStockQuantityChanging(value);
					this.SendPropertyChanging();
					this._DisplayStockQuantity = value;
					this.SendPropertyChanged("DisplayStockQuantity");
					this.OnDisplayStockQuantityChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MinStockQuantity", DbType="Int NOT NULL")]
		public int MinStockQuantity
		{
			get
			{
				return this._MinStockQuantity;
			}
			set
			{
				if ((this._MinStockQuantity != value))
				{
					this.OnMinStockQuantityChanging(value);
					this.SendPropertyChanging();
					this._MinStockQuantity = value;
					this.SendPropertyChanged("MinStockQuantity");
					this.OnMinStockQuantityChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LowStockActivityId", DbType="Int NOT NULL")]
		public int LowStockActivityId
		{
			get
			{
				return this._LowStockActivityId;
			}
			set
			{
				if ((this._LowStockActivityId != value))
				{
					this.OnLowStockActivityIdChanging(value);
					this.SendPropertyChanging();
					this._LowStockActivityId = value;
					this.SendPropertyChanged("LowStockActivityId");
					this.OnLowStockActivityIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NotifyAdminForQuantityBelow", DbType="Int NOT NULL")]
		public int NotifyAdminForQuantityBelow
		{
			get
			{
				return this._NotifyAdminForQuantityBelow;
			}
			set
			{
				if ((this._NotifyAdminForQuantityBelow != value))
				{
					this.OnNotifyAdminForQuantityBelowChanging(value);
					this.SendPropertyChanging();
					this._NotifyAdminForQuantityBelow = value;
					this.SendPropertyChanged("NotifyAdminForQuantityBelow");
					this.OnNotifyAdminForQuantityBelowChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_BackorderModeId", DbType="Int NOT NULL")]
		public int BackorderModeId
		{
			get
			{
				return this._BackorderModeId;
			}
			set
			{
				if ((this._BackorderModeId != value))
				{
					this.OnBackorderModeIdChanging(value);
					this.SendPropertyChanging();
					this._BackorderModeId = value;
					this.SendPropertyChanged("BackorderModeId");
					this.OnBackorderModeIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AllowBackInStockSubscriptions", DbType="Bit NOT NULL")]
		public bool AllowBackInStockSubscriptions
		{
			get
			{
				return this._AllowBackInStockSubscriptions;
			}
			set
			{
				if ((this._AllowBackInStockSubscriptions != value))
				{
					this.OnAllowBackInStockSubscriptionsChanging(value);
					this.SendPropertyChanging();
					this._AllowBackInStockSubscriptions = value;
					this.SendPropertyChanged("AllowBackInStockSubscriptions");
					this.OnAllowBackInStockSubscriptionsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderMinimumQuantity", DbType="Int NOT NULL")]
		public int OrderMinimumQuantity
		{
			get
			{
				return this._OrderMinimumQuantity;
			}
			set
			{
				if ((this._OrderMinimumQuantity != value))
				{
					this.OnOrderMinimumQuantityChanging(value);
					this.SendPropertyChanging();
					this._OrderMinimumQuantity = value;
					this.SendPropertyChanged("OrderMinimumQuantity");
					this.OnOrderMinimumQuantityChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderMaximumQuantity", DbType="Int NOT NULL")]
		public int OrderMaximumQuantity
		{
			get
			{
				return this._OrderMaximumQuantity;
			}
			set
			{
				if ((this._OrderMaximumQuantity != value))
				{
					this.OnOrderMaximumQuantityChanging(value);
					this.SendPropertyChanging();
					this._OrderMaximumQuantity = value;
					this.SendPropertyChanged("OrderMaximumQuantity");
					this.OnOrderMaximumQuantityChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AllowedQuantities", DbType="NVarChar(1000)")]
		public string AllowedQuantities
		{
			get
			{
				return this._AllowedQuantities;
			}
			set
			{
				if ((this._AllowedQuantities != value))
				{
					this.OnAllowedQuantitiesChanging(value);
					this.SendPropertyChanging();
					this._AllowedQuantities = value;
					this.SendPropertyChanged("AllowedQuantities");
					this.OnAllowedQuantitiesChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisableBuyButton", DbType="Bit NOT NULL")]
		public bool DisableBuyButton
		{
			get
			{
				return this._DisableBuyButton;
			}
			set
			{
				if ((this._DisableBuyButton != value))
				{
					this.OnDisableBuyButtonChanging(value);
					this.SendPropertyChanging();
					this._DisableBuyButton = value;
					this.SendPropertyChanged("DisableBuyButton");
					this.OnDisableBuyButtonChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisableWishlistButton", DbType="Bit NOT NULL")]
		public bool DisableWishlistButton
		{
			get
			{
				return this._DisableWishlistButton;
			}
			set
			{
				if ((this._DisableWishlistButton != value))
				{
					this.OnDisableWishlistButtonChanging(value);
					this.SendPropertyChanging();
					this._DisableWishlistButton = value;
					this.SendPropertyChanged("DisableWishlistButton");
					this.OnDisableWishlistButtonChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AvailableForPreOrder", DbType="Bit NOT NULL")]
		public bool AvailableForPreOrder
		{
			get
			{
				return this._AvailableForPreOrder;
			}
			set
			{
				if ((this._AvailableForPreOrder != value))
				{
					this.OnAvailableForPreOrderChanging(value);
					this.SendPropertyChanging();
					this._AvailableForPreOrder = value;
					this.SendPropertyChanged("AvailableForPreOrder");
					this.OnAvailableForPreOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CallForPrice", DbType="Bit NOT NULL")]
		public bool CallForPrice
		{
			get
			{
				return this._CallForPrice;
			}
			set
			{
				if ((this._CallForPrice != value))
				{
					this.OnCallForPriceChanging(value);
					this.SendPropertyChanging();
					this._CallForPrice = value;
					this.SendPropertyChanged("CallForPrice");
					this.OnCallForPriceChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Price", DbType="Decimal(18,4) NOT NULL")]
		public decimal Price
		{
			get
			{
				return this._Price;
			}
			set
			{
				if ((this._Price != value))
				{
					this.OnPriceChanging(value);
					this.SendPropertyChanging();
					this._Price = value;
					this.SendPropertyChanged("Price");
					this.OnPriceChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OldPrice", DbType="Decimal(18,4) NOT NULL")]
		public decimal OldPrice
		{
			get
			{
				return this._OldPrice;
			}
			set
			{
				if ((this._OldPrice != value))
				{
					this.OnOldPriceChanging(value);
					this.SendPropertyChanging();
					this._OldPrice = value;
					this.SendPropertyChanged("OldPrice");
					this.OnOldPriceChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductCost", DbType="Decimal(18,4) NOT NULL")]
		public decimal ProductCost
		{
			get
			{
				return this._ProductCost;
			}
			set
			{
				if ((this._ProductCost != value))
				{
					this.OnProductCostChanging(value);
					this.SendPropertyChanging();
					this._ProductCost = value;
					this.SendPropertyChanged("ProductCost");
					this.OnProductCostChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SpecialPrice", DbType="Decimal(18,4)")]
		public System.Nullable<decimal> SpecialPrice
		{
			get
			{
				return this._SpecialPrice;
			}
			set
			{
				if ((this._SpecialPrice != value))
				{
					this.OnSpecialPriceChanging(value);
					this.SendPropertyChanging();
					this._SpecialPrice = value;
					this.SendPropertyChanged("SpecialPrice");
					this.OnSpecialPriceChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SpecialPriceStartDateTimeUtc", DbType="DateTime")]
		public System.Nullable<System.DateTime> SpecialPriceStartDateTimeUtc
		{
			get
			{
				return this._SpecialPriceStartDateTimeUtc;
			}
			set
			{
				if ((this._SpecialPriceStartDateTimeUtc != value))
				{
					this.OnSpecialPriceStartDateTimeUtcChanging(value);
					this.SendPropertyChanging();
					this._SpecialPriceStartDateTimeUtc = value;
					this.SendPropertyChanged("SpecialPriceStartDateTimeUtc");
					this.OnSpecialPriceStartDateTimeUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SpecialPriceEndDateTimeUtc", DbType="DateTime")]
		public System.Nullable<System.DateTime> SpecialPriceEndDateTimeUtc
		{
			get
			{
				return this._SpecialPriceEndDateTimeUtc;
			}
			set
			{
				if ((this._SpecialPriceEndDateTimeUtc != value))
				{
					this.OnSpecialPriceEndDateTimeUtcChanging(value);
					this.SendPropertyChanging();
					this._SpecialPriceEndDateTimeUtc = value;
					this.SendPropertyChanged("SpecialPriceEndDateTimeUtc");
					this.OnSpecialPriceEndDateTimeUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerEntersPrice", DbType="Bit NOT NULL")]
		public bool CustomerEntersPrice
		{
			get
			{
				return this._CustomerEntersPrice;
			}
			set
			{
				if ((this._CustomerEntersPrice != value))
				{
					this.OnCustomerEntersPriceChanging(value);
					this.SendPropertyChanging();
					this._CustomerEntersPrice = value;
					this.SendPropertyChanged("CustomerEntersPrice");
					this.OnCustomerEntersPriceChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MinimumCustomerEnteredPrice", DbType="Decimal(18,4) NOT NULL")]
		public decimal MinimumCustomerEnteredPrice
		{
			get
			{
				return this._MinimumCustomerEnteredPrice;
			}
			set
			{
				if ((this._MinimumCustomerEnteredPrice != value))
				{
					this.OnMinimumCustomerEnteredPriceChanging(value);
					this.SendPropertyChanging();
					this._MinimumCustomerEnteredPrice = value;
					this.SendPropertyChanged("MinimumCustomerEnteredPrice");
					this.OnMinimumCustomerEnteredPriceChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MaximumCustomerEnteredPrice", DbType="Decimal(18,4) NOT NULL")]
		public decimal MaximumCustomerEnteredPrice
		{
			get
			{
				return this._MaximumCustomerEnteredPrice;
			}
			set
			{
				if ((this._MaximumCustomerEnteredPrice != value))
				{
					this.OnMaximumCustomerEnteredPriceChanging(value);
					this.SendPropertyChanging();
					this._MaximumCustomerEnteredPrice = value;
					this.SendPropertyChanged("MaximumCustomerEnteredPrice");
					this.OnMaximumCustomerEnteredPriceChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_HasTierPrices", DbType="Bit NOT NULL")]
		public bool HasTierPrices
		{
			get
			{
				return this._HasTierPrices;
			}
			set
			{
				if ((this._HasTierPrices != value))
				{
					this.OnHasTierPricesChanging(value);
					this.SendPropertyChanging();
					this._HasTierPrices = value;
					this.SendPropertyChanged("HasTierPrices");
					this.OnHasTierPricesChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_HasDiscountsApplied", DbType="Bit NOT NULL")]
		public bool HasDiscountsApplied
		{
			get
			{
				return this._HasDiscountsApplied;
			}
			set
			{
				if ((this._HasDiscountsApplied != value))
				{
					this.OnHasDiscountsAppliedChanging(value);
					this.SendPropertyChanging();
					this._HasDiscountsApplied = value;
					this.SendPropertyChanged("HasDiscountsApplied");
					this.OnHasDiscountsAppliedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Weight", DbType="Decimal(18,4) NOT NULL")]
		public decimal Weight
		{
			get
			{
				return this._Weight;
			}
			set
			{
				if ((this._Weight != value))
				{
					this.OnWeightChanging(value);
					this.SendPropertyChanging();
					this._Weight = value;
					this.SendPropertyChanged("Weight");
					this.OnWeightChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Length", DbType="Decimal(18,4) NOT NULL")]
		public decimal Length
		{
			get
			{
				return this._Length;
			}
			set
			{
				if ((this._Length != value))
				{
					this.OnLengthChanging(value);
					this.SendPropertyChanging();
					this._Length = value;
					this.SendPropertyChanged("Length");
					this.OnLengthChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Width", DbType="Decimal(18,4) NOT NULL")]
		public decimal Width
		{
			get
			{
				return this._Width;
			}
			set
			{
				if ((this._Width != value))
				{
					this.OnWidthChanging(value);
					this.SendPropertyChanging();
					this._Width = value;
					this.SendPropertyChanged("Width");
					this.OnWidthChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Height", DbType="Decimal(18,4) NOT NULL")]
		public decimal Height
		{
			get
			{
				return this._Height;
			}
			set
			{
				if ((this._Height != value))
				{
					this.OnHeightChanging(value);
					this.SendPropertyChanging();
					this._Height = value;
					this.SendPropertyChanged("Height");
					this.OnHeightChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PictureId", DbType="Int NOT NULL")]
		public int PictureId
		{
			get
			{
				return this._PictureId;
			}
			set
			{
				if ((this._PictureId != value))
				{
					this.OnPictureIdChanging(value);
					this.SendPropertyChanging();
					this._PictureId = value;
					this.SendPropertyChanged("PictureId");
					this.OnPictureIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AvailableStartDateTimeUtc", DbType="DateTime")]
		public System.Nullable<System.DateTime> AvailableStartDateTimeUtc
		{
			get
			{
				return this._AvailableStartDateTimeUtc;
			}
			set
			{
				if ((this._AvailableStartDateTimeUtc != value))
				{
					this.OnAvailableStartDateTimeUtcChanging(value);
					this.SendPropertyChanging();
					this._AvailableStartDateTimeUtc = value;
					this.SendPropertyChanged("AvailableStartDateTimeUtc");
					this.OnAvailableStartDateTimeUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AvailableEndDateTimeUtc", DbType="DateTime")]
		public System.Nullable<System.DateTime> AvailableEndDateTimeUtc
		{
			get
			{
				return this._AvailableEndDateTimeUtc;
			}
			set
			{
				if ((this._AvailableEndDateTimeUtc != value))
				{
					this.OnAvailableEndDateTimeUtcChanging(value);
					this.SendPropertyChanging();
					this._AvailableEndDateTimeUtc = value;
					this.SendPropertyChanged("AvailableEndDateTimeUtc");
					this.OnAvailableEndDateTimeUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Published", DbType="Bit NOT NULL")]
		public bool Published
		{
			get
			{
				return this._Published;
			}
			set
			{
				if ((this._Published != value))
				{
					this.OnPublishedChanging(value);
					this.SendPropertyChanging();
					this._Published = value;
					this.SendPropertyChanged("Published");
					this.OnPublishedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Deleted", DbType="Bit NOT NULL")]
		public bool Deleted
		{
			get
			{
				return this._Deleted;
			}
			set
			{
				if ((this._Deleted != value))
				{
					this.OnDeletedChanging(value);
					this.SendPropertyChanging();
					this._Deleted = value;
					this.SendPropertyChanged("Deleted");
					this.OnDeletedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CreatedOnUtc", DbType="DateTime NOT NULL")]
		public System.DateTime CreatedOnUtc
		{
			get
			{
				return this._CreatedOnUtc;
			}
			set
			{
				if ((this._CreatedOnUtc != value))
				{
					this.OnCreatedOnUtcChanging(value);
					this.SendPropertyChanging();
					this._CreatedOnUtc = value;
					this.SendPropertyChanged("CreatedOnUtc");
					this.OnCreatedOnUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UpdatedOnUtc", DbType="DateTime NOT NULL")]
		public System.DateTime UpdatedOnUtc
		{
			get
			{
				return this._UpdatedOnUtc;
			}
			set
			{
				if ((this._UpdatedOnUtc != value))
				{
					this.OnUpdatedOnUtcChanging(value);
					this.SendPropertyChanging();
					this._UpdatedOnUtc = value;
					this.SendPropertyChanged("UpdatedOnUtc");
					this.OnUpdatedOnUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ProductVariant_ProductVariant_ProductAttribute_Mapping", Storage="_ProductVariant_ProductAttribute_Mappings", ThisKey="Id", OtherKey="ProductVariantId")]
		public EntitySet<Nop280_ProductVariant_ProductAttribute_Mapping> Nop280_ProductVariant_ProductAttribute_Mappings
		{
			get
			{
				return this._ProductVariant_ProductAttribute_Mappings;
			}
			set
			{
				this._ProductVariant_ProductAttribute_Mappings.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ProductVariant_ProductVariantAttributeCombination", Storage="_ProductVariantAttributeCombinations", ThisKey="Id", OtherKey="ProductVariantId")]
		public EntitySet<Nop280_ProductVariantAttributeCombination> Nop280_ProductVariantAttributeCombinations
		{
			get
			{
				return this._ProductVariantAttributeCombinations;
			}
			set
			{
				this._ProductVariantAttributeCombinations.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ProductVariant_TierPrice", Storage="_TierPrices", ThisKey="Id", OtherKey="ProductVariantId")]
		public EntitySet<Nop280_TierPrice> Nop280_TierPrices
		{
			get
			{
				return this._TierPrices;
			}
			set
			{
				this._TierPrices.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ProductVariant_Nop280_OrderProductVariant", Storage="_OrderProductVariants", ThisKey="Id", OtherKey="ProductVariantId")]
		public EntitySet<Nop280_OrderProductVariant> Nop280_OrderProductVariants
		{
			get
			{
				return this._OrderProductVariants;
			}
			set
			{
				this._OrderProductVariants.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Product_ProductVariant", Storage="_Product", ThisKey="ProductId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Product Nop280_Product
		{
			get
			{
				return this._Product.Entity;
			}
			set
			{
				Nop280_Product previousValue = this._Product.Entity;
				if (((previousValue != value) 
							|| (this._Product.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Product.Entity = null;
						previousValue.Nop280_ProductVariants.Remove(this);
					}
					this._Product.Entity = value;
					if ((value != null))
					{
						value.Nop280_ProductVariants.Add(this);
						this._ProductId = value.Id;
					}
					else
					{
						this._ProductId = default(int);
					}
					this.SendPropertyChanged("Nop280_Product");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="TaxCategory_ProductVariant", Storage="_TaxCategory", ThisKey="TaxCategoryId", OtherKey="Id", IsForeignKey=true)]
		public Nop280_TaxCategory Nop280_TaxCategory
		{
			get
			{
				return this._TaxCategory.Entity;
			}
			set
			{
				Nop280_TaxCategory previousValue = this._TaxCategory.Entity;
				if (((previousValue != value) 
							|| (this._TaxCategory.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._TaxCategory.Entity = null;
						previousValue.Nop280_ProductVariants.Remove(this);
					}
					this._TaxCategory.Entity = value;
					if ((value != null))
					{
						value.Nop280_ProductVariants.Add(this);
						this._TaxCategoryId = value.Id;
					}
					else
					{
						this._TaxCategoryId = default(int);
					}
					this.SendPropertyChanged("Nop280_TaxCategory");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Download_ProductVariant", Storage="_Download", ThisKey="DownloadId", OtherKey="Id", IsForeignKey=true)]
		public Nop280_Download Nop280_Download
		{
			get
			{
				return this._Download.Entity;
			}
			set
			{
				Nop280_Download previousValue = this._Download.Entity;
				if (((previousValue != value) 
							|| (this._Download.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Download.Entity = null;
						previousValue.Nop280_ProductVariants.Remove(this);
					}
					this._Download.Entity = value;
					if ((value != null))
					{
						value.Nop280_ProductVariants.Add(this);
						this._DownloadId = value.Id;
					}
					else
					{
						this._DownloadId = default(int);
					}
					this.SendPropertyChanged("Nop280_Download");
				}
			}
		}
		
		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_ProductVariant_ProductAttribute_Mappings(Nop280_ProductVariant_ProductAttribute_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductVariant = this;
		}
		
		private void detach_ProductVariant_ProductAttribute_Mappings(Nop280_ProductVariant_ProductAttribute_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductVariant = null;
		}
		
		private void attach_ProductVariantAttributeCombinations(Nop280_ProductVariantAttributeCombination entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductVariant = this;
		}
		
		private void detach_ProductVariantAttributeCombinations(Nop280_ProductVariantAttributeCombination entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductVariant = null;
		}
		
		private void attach_TierPrices(Nop280_TierPrice entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductVariant = this;
		}
		
		private void detach_TierPrices(Nop280_TierPrice entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductVariant = null;
		}
		
		private void attach_OrderProductVariants(Nop280_OrderProductVariant entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductVariant = this;
		}
		
		private void detach_OrderProductVariants(Nop280_OrderProductVariant entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductVariant = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.ProductVariant_ProductAttribute_Mapping")]
	public partial class Nop280_ProductVariant_ProductAttribute_Mapping : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _ProductVariantId;
		
		private int _ProductAttributeId;
		
		private string _TextPrompt;
		
		private bool _IsRequired;
		
		private int _AttributeControlTypeId;
		
		private int _DisplayOrder;
		
		private EntitySet<Nop280_ProductVariantAttributeValue> _ProductVariantAttributeValues;
		
		private EntityRef<Nop280_ProductVariant> _ProductVariant;
		
		private EntityRef<Nop280_ProductAttribute> _ProductAttribute;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnProductVariantIdChanging(int value);
    partial void OnProductVariantIdChanged();
    partial void OnProductAttributeIdChanging(int value);
    partial void OnProductAttributeIdChanged();
    partial void OnTextPromptChanging(string value);
    partial void OnTextPromptChanged();
    partial void OnIsRequiredChanging(bool value);
    partial void OnIsRequiredChanged();
    partial void OnAttributeControlTypeIdChanging(int value);
    partial void OnAttributeControlTypeIdChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    #endregion
		
		public Nop280_ProductVariant_ProductAttribute_Mapping()
		{
			this._ProductVariantAttributeValues = new EntitySet<Nop280_ProductVariantAttributeValue>(new Action<Nop280_ProductVariantAttributeValue>(this.attach_ProductVariantAttributeValues), new Action<Nop280_ProductVariantAttributeValue>(this.detach_ProductVariantAttributeValues));
			this._ProductVariant = default(EntityRef<Nop280_ProductVariant>);
			this._ProductAttribute = default(EntityRef<Nop280_ProductAttribute>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductVariantId", DbType="Int NOT NULL")]
		public int ProductVariantId
		{
			get
			{
				return this._ProductVariantId;
			}
			set
			{
				if ((this._ProductVariantId != value))
				{
					if (this._ProductVariant.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnProductVariantIdChanging(value);
					this.SendPropertyChanging();
					this._ProductVariantId = value;
					this.SendPropertyChanged("ProductVariantId");
					this.OnProductVariantIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductAttributeId", DbType="Int NOT NULL")]
		public int ProductAttributeId
		{
			get
			{
				return this._ProductAttributeId;
			}
			set
			{
				if ((this._ProductAttributeId != value))
				{
					if (this._ProductAttribute.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnProductAttributeIdChanging(value);
					this.SendPropertyChanging();
					this._ProductAttributeId = value;
					this.SendPropertyChanged("ProductAttributeId");
					this.OnProductAttributeIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TextPrompt", DbType="NVarChar(MAX)")]
		public string TextPrompt
		{
			get
			{
				return this._TextPrompt;
			}
			set
			{
				if ((this._TextPrompt != value))
				{
					this.OnTextPromptChanging(value);
					this.SendPropertyChanging();
					this._TextPrompt = value;
					this.SendPropertyChanged("TextPrompt");
					this.OnTextPromptChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsRequired", DbType="Bit NOT NULL")]
		public bool IsRequired
		{
			get
			{
				return this._IsRequired;
			}
			set
			{
				if ((this._IsRequired != value))
				{
					this.OnIsRequiredChanging(value);
					this.SendPropertyChanging();
					this._IsRequired = value;
					this.SendPropertyChanged("IsRequired");
					this.OnIsRequiredChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AttributeControlTypeId", DbType="Int NOT NULL")]
		public int AttributeControlTypeId
		{
			get
			{
				return this._AttributeControlTypeId;
			}
			set
			{
				if ((this._AttributeControlTypeId != value))
				{
					this.OnAttributeControlTypeIdChanging(value);
					this.SendPropertyChanging();
					this._AttributeControlTypeId = value;
					this.SendPropertyChanged("AttributeControlTypeId");
					this.OnAttributeControlTypeIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ProductVariant_ProductAttribute_Mapping_ProductVariantAttributeValue", Storage="_ProductVariantAttributeValues", ThisKey="Id", OtherKey="ProductVariantAttributeId")]
		public EntitySet<Nop280_ProductVariantAttributeValue> Nop280_ProductVariantAttributeValues
		{
			get
			{
				return this._ProductVariantAttributeValues;
			}
			set
			{
				this._ProductVariantAttributeValues.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ProductVariant_ProductVariant_ProductAttribute_Mapping", Storage="_ProductVariant", ThisKey="ProductVariantId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_ProductVariant Nop280_ProductVariant
		{
			get
			{
				return this._ProductVariant.Entity;
			}
			set
			{
				Nop280_ProductVariant previousValue = this._ProductVariant.Entity;
				if (((previousValue != value) 
							|| (this._ProductVariant.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._ProductVariant.Entity = null;
						previousValue.Nop280_ProductVariant_ProductAttribute_Mappings.Remove(this);
					}
					this._ProductVariant.Entity = value;
					if ((value != null))
					{
						value.Nop280_ProductVariant_ProductAttribute_Mappings.Add(this);
						this._ProductVariantId = value.Id;
					}
					else
					{
						this._ProductVariantId = default(int);
					}
					this.SendPropertyChanged("Nop280_ProductVariant");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ProductAttribute_ProductVariant_ProductAttribute_Mapping", Storage="_ProductAttribute", ThisKey="ProductAttributeId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_ProductAttribute Nop280_ProductAttribute
		{
			get
			{
				return this._ProductAttribute.Entity;
			}
			set
			{
				Nop280_ProductAttribute previousValue = this._ProductAttribute.Entity;
				if (((previousValue != value) 
							|| (this._ProductAttribute.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._ProductAttribute.Entity = null;
						previousValue.Nop280_ProductVariant_ProductAttribute_Mappings.Remove(this);
					}
					this._ProductAttribute.Entity = value;
					if ((value != null))
					{
						value.Nop280_ProductVariant_ProductAttribute_Mappings.Add(this);
						this._ProductAttributeId = value.Id;
					}
					else
					{
						this._ProductAttributeId = default(int);
					}
					this.SendPropertyChanged("Nop280_ProductAttribute");
				}
			}
		}
		
		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_ProductVariantAttributeValues(Nop280_ProductVariantAttributeValue entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductVariant_ProductAttribute_Mapping = this;
		}
		
		private void detach_ProductVariantAttributeValues(Nop280_ProductVariantAttributeValue entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductVariant_ProductAttribute_Mapping = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.ProductVariantAttributeCombination")]
	public partial class Nop280_ProductVariantAttributeCombination : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _ProductVariantId;
		
		private string _AttributesXml;
		
		private int _StockQuantity;
		
		private bool _AllowOutOfStockOrders;
		
		private string _Sku;
		
		private string _ManufacturerPartNumber;
		
		private string _Gtin;
		
		private EntityRef<Nop280_ProductVariant> _ProductVariant;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnProductVariantIdChanging(int value);
    partial void OnProductVariantIdChanged();
    partial void OnAttributesXmlChanging(string value);
    partial void OnAttributesXmlChanged();
    partial void OnStockQuantityChanging(int value);
    partial void OnStockQuantityChanged();
    partial void OnAllowOutOfStockOrdersChanging(bool value);
    partial void OnAllowOutOfStockOrdersChanged();
    partial void OnSkuChanging(string value);
    partial void OnSkuChanged();
    partial void OnManufacturerPartNumberChanging(string value);
    partial void OnManufacturerPartNumberChanged();
    partial void OnGtinChanging(string value);
    partial void OnGtinChanged();
    #endregion
		
		public Nop280_ProductVariantAttributeCombination()
		{
			this._ProductVariant = default(EntityRef<Nop280_ProductVariant>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductVariantId", DbType="Int NOT NULL")]
		public int ProductVariantId
		{
			get
			{
				return this._ProductVariantId;
			}
			set
			{
				if ((this._ProductVariantId != value))
				{
					if (this._ProductVariant.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnProductVariantIdChanging(value);
					this.SendPropertyChanging();
					this._ProductVariantId = value;
					this.SendPropertyChanged("ProductVariantId");
					this.OnProductVariantIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AttributesXml", DbType="NVarChar(MAX)")]
		public string AttributesXml
		{
			get
			{
				return this._AttributesXml;
			}
			set
			{
				if ((this._AttributesXml != value))
				{
					this.OnAttributesXmlChanging(value);
					this.SendPropertyChanging();
					this._AttributesXml = value;
					this.SendPropertyChanged("AttributesXml");
					this.OnAttributesXmlChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StockQuantity", DbType="Int NOT NULL")]
		public int StockQuantity
		{
			get
			{
				return this._StockQuantity;
			}
			set
			{
				if ((this._StockQuantity != value))
				{
					this.OnStockQuantityChanging(value);
					this.SendPropertyChanging();
					this._StockQuantity = value;
					this.SendPropertyChanged("StockQuantity");
					this.OnStockQuantityChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AllowOutOfStockOrders", DbType="Bit NOT NULL")]
		public bool AllowOutOfStockOrders
		{
			get
			{
				return this._AllowOutOfStockOrders;
			}
			set
			{
				if ((this._AllowOutOfStockOrders != value))
				{
					this.OnAllowOutOfStockOrdersChanging(value);
					this.SendPropertyChanging();
					this._AllowOutOfStockOrders = value;
					this.SendPropertyChanged("AllowOutOfStockOrders");
					this.OnAllowOutOfStockOrdersChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Sku", DbType="NVarChar(400)")]
		public string Sku
		{
			get
			{
				return this._Sku;
			}
			set
			{
				if ((this._Sku != value))
				{
					this.OnSkuChanging(value);
					this.SendPropertyChanging();
					this._Sku = value;
					this.SendPropertyChanged("Sku");
					this.OnSkuChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ManufacturerPartNumber", DbType="NVarChar(400)")]
		public string ManufacturerPartNumber
		{
			get
			{
				return this._ManufacturerPartNumber;
			}
			set
			{
				if ((this._ManufacturerPartNumber != value))
				{
					this.OnManufacturerPartNumberChanging(value);
					this.SendPropertyChanging();
					this._ManufacturerPartNumber = value;
					this.SendPropertyChanged("ManufacturerPartNumber");
					this.OnManufacturerPartNumberChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Gtin", DbType="NVarChar(400)")]
		public string Gtin
		{
			get
			{
				return this._Gtin;
			}
			set
			{
				if ((this._Gtin != value))
				{
					this.OnGtinChanging(value);
					this.SendPropertyChanging();
					this._Gtin = value;
					this.SendPropertyChanged("Gtin");
					this.OnGtinChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ProductVariant_ProductVariantAttributeCombination", Storage="_ProductVariant", ThisKey="ProductVariantId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_ProductVariant Nop280_ProductVariant
		{
			get
			{
				return this._ProductVariant.Entity;
			}
			set
			{
				Nop280_ProductVariant previousValue = this._ProductVariant.Entity;
				if (((previousValue != value) 
							|| (this._ProductVariant.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._ProductVariant.Entity = null;
						previousValue.Nop280_ProductVariantAttributeCombinations.Remove(this);
					}
					this._ProductVariant.Entity = value;
					if ((value != null))
					{
						value.Nop280_ProductVariantAttributeCombinations.Add(this);
						this._ProductVariantId = value.Id;
					}
					else
					{
						this._ProductVariantId = default(int);
					}
					this.SendPropertyChanged("Nop280_ProductVariant");
				}
			}
		}
		
		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.ProductVariantAttributeValue")]
	public partial class Nop280_ProductVariantAttributeValue : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _ProductVariantAttributeId;
		
		private string _Name;
		
		private string _ColorSquaresRgb;
		
		private decimal _PriceAdjustment;
		
		private decimal _WeightAdjustment;
		
		private bool _IsPreSelected;
		
		private int _DisplayOrder;
		
		private EntityRef<Nop280_ProductVariant_ProductAttribute_Mapping> _ProductVariant_ProductAttribute_Mapping;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnProductVariantAttributeIdChanging(int value);
    partial void OnProductVariantAttributeIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnColorSquaresRgbChanging(string value);
    partial void OnColorSquaresRgbChanged();
    partial void OnPriceAdjustmentChanging(decimal value);
    partial void OnPriceAdjustmentChanged();
    partial void OnWeightAdjustmentChanging(decimal value);
    partial void OnWeightAdjustmentChanged();
    partial void OnIsPreSelectedChanging(bool value);
    partial void OnIsPreSelectedChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    #endregion
		
		public Nop280_ProductVariantAttributeValue()
		{
			this._ProductVariant_ProductAttribute_Mapping = default(EntityRef<Nop280_ProductVariant_ProductAttribute_Mapping>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductVariantAttributeId", DbType="Int NOT NULL")]
		public int ProductVariantAttributeId
		{
			get
			{
				return this._ProductVariantAttributeId;
			}
			set
			{
				if ((this._ProductVariantAttributeId != value))
				{
					if (this._ProductVariant_ProductAttribute_Mapping.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnProductVariantAttributeIdChanging(value);
					this.SendPropertyChanging();
					this._ProductVariantAttributeId = value;
					this.SendPropertyChanged("ProductVariantAttributeId");
					this.OnProductVariantAttributeIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(400) NOT NULL", CanBeNull=false)]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ColorSquaresRgb", DbType="NVarChar(100)")]
		public string ColorSquaresRgb
		{
			get
			{
				return this._ColorSquaresRgb;
			}
			set
			{
				if ((this._ColorSquaresRgb != value))
				{
					this.OnColorSquaresRgbChanging(value);
					this.SendPropertyChanging();
					this._ColorSquaresRgb = value;
					this.SendPropertyChanged("ColorSquaresRgb");
					this.OnColorSquaresRgbChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PriceAdjustment", DbType="Decimal(18,4) NOT NULL")]
		public decimal PriceAdjustment
		{
			get
			{
				return this._PriceAdjustment;
			}
			set
			{
				if ((this._PriceAdjustment != value))
				{
					this.OnPriceAdjustmentChanging(value);
					this.SendPropertyChanging();
					this._PriceAdjustment = value;
					this.SendPropertyChanged("PriceAdjustment");
					this.OnPriceAdjustmentChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WeightAdjustment", DbType="Decimal(18,4) NOT NULL")]
		public decimal WeightAdjustment
		{
			get
			{
				return this._WeightAdjustment;
			}
			set
			{
				if ((this._WeightAdjustment != value))
				{
					this.OnWeightAdjustmentChanging(value);
					this.SendPropertyChanging();
					this._WeightAdjustment = value;
					this.SendPropertyChanged("WeightAdjustment");
					this.OnWeightAdjustmentChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsPreSelected", DbType="Bit NOT NULL")]
		public bool IsPreSelected
		{
			get
			{
				return this._IsPreSelected;
			}
			set
			{
				if ((this._IsPreSelected != value))
				{
					this.OnIsPreSelectedChanging(value);
					this.SendPropertyChanging();
					this._IsPreSelected = value;
					this.SendPropertyChanged("IsPreSelected");
					this.OnIsPreSelectedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ProductVariant_ProductAttribute_Mapping_ProductVariantAttributeValue", Storage="_ProductVariant_ProductAttribute_Mapping", ThisKey="ProductVariantAttributeId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_ProductVariant_ProductAttribute_Mapping Nop280_ProductVariant_ProductAttribute_Mapping
		{
			get
			{
				return this._ProductVariant_ProductAttribute_Mapping.Entity;
			}
			set
			{
				Nop280_ProductVariant_ProductAttribute_Mapping previousValue = this._ProductVariant_ProductAttribute_Mapping.Entity;
				if (((previousValue != value) 
							|| (this._ProductVariant_ProductAttribute_Mapping.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._ProductVariant_ProductAttribute_Mapping.Entity = null;
						previousValue.Nop280_ProductVariantAttributeValues.Remove(this);
					}
					this._ProductVariant_ProductAttribute_Mapping.Entity = value;
					if ((value != null))
					{
						value.Nop280_ProductVariantAttributeValues.Add(this);
						this._ProductVariantAttributeId = value.Id;
					}
					else
					{
						this._ProductVariantAttributeId = default(int);
					}
					this.SendPropertyChanged("Nop280_ProductVariant_ProductAttribute_Mapping");
				}
			}
		}
		
		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.ProductAttribute")]
	public partial class Nop280_ProductAttribute : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private string _Name;
		
		private string _Description;
		
		private EntitySet<Nop280_ProductVariant_ProductAttribute_Mapping> _ProductVariant_ProductAttribute_Mappings;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnDescriptionChanging(string value);
    partial void OnDescriptionChanged();
    #endregion
		
		public Nop280_ProductAttribute()
		{
			this._ProductVariant_ProductAttribute_Mappings = new EntitySet<Nop280_ProductVariant_ProductAttribute_Mapping>(new Action<Nop280_ProductVariant_ProductAttribute_Mapping>(this.attach_ProductVariant_ProductAttribute_Mappings), new Action<Nop280_ProductVariant_ProductAttribute_Mapping>(this.detach_ProductVariant_ProductAttribute_Mappings));
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(MAX) NOT NULL", CanBeNull=false)]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Description", DbType="NVarChar(MAX)")]
		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.AssociationAttribute(Name="ProductAttribute_ProductVariant_ProductAttribute_Mapping", Storage="_ProductVariant_ProductAttribute_Mappings", ThisKey="Id", OtherKey="ProductAttributeId")]
		public EntitySet<Nop280_ProductVariant_ProductAttribute_Mapping> Nop280_ProductVariant_ProductAttribute_Mappings
		{
			get
			{
				return this._ProductVariant_ProductAttribute_Mappings;
			}
			set
			{
				this._ProductVariant_ProductAttribute_Mappings.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_ProductVariant_ProductAttribute_Mappings(Nop280_ProductVariant_ProductAttribute_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductAttribute = this;
		}
		
		private void detach_ProductVariant_ProductAttribute_Mappings(Nop280_ProductVariant_ProductAttribute_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_ProductAttribute = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Manufacturer")]
	public partial class Nop280_Manufacturer : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private string _Name;
		
		private string _Description;
		
		private int _ManufacturerTemplateId;
		
		private string _MetaKeywords;
		
		private string _MetaDescription;
		
		private string _MetaTitle;
		
		private int _PictureId;
		
		private int _PageSize;
		
		private bool _AllowCustomersToSelectPageSize;
		
		private string _PageSizeOptions;
		
		private string _PriceRanges;
		
		private bool _SubjectToAcl;
		
		private bool _Published;
		
		private bool _Deleted;
		
		private int _DisplayOrder;
		
		private System.DateTime _CreatedOnUtc;
		
		private System.DateTime _UpdatedOnUtc;
		
		private EntitySet<Nop280_Product_Manufacturer_Mapping> _Product_Manufacturer_Mappings;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnDescriptionChanging(string value);
    partial void OnDescriptionChanged();
    partial void OnManufacturerTemplateIdChanging(int value);
    partial void OnManufacturerTemplateIdChanged();
    partial void OnMetaKeywordsChanging(string value);
    partial void OnMetaKeywordsChanged();
    partial void OnMetaDescriptionChanging(string value);
    partial void OnMetaDescriptionChanged();
    partial void OnMetaTitleChanging(string value);
    partial void OnMetaTitleChanged();
    partial void OnPictureIdChanging(int value);
    partial void OnPictureIdChanged();
    partial void OnPageSizeChanging(int value);
    partial void OnPageSizeChanged();
    partial void OnAllowCustomersToSelectPageSizeChanging(bool value);
    partial void OnAllowCustomersToSelectPageSizeChanged();
    partial void OnPageSizeOptionsChanging(string value);
    partial void OnPageSizeOptionsChanged();
    partial void OnPriceRangesChanging(string value);
    partial void OnPriceRangesChanged();
    partial void OnSubjectToAclChanging(bool value);
    partial void OnSubjectToAclChanged();
    partial void OnPublishedChanging(bool value);
    partial void OnPublishedChanged();
    partial void OnDeletedChanging(bool value);
    partial void OnDeletedChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    partial void OnCreatedOnUtcChanging(System.DateTime value);
    partial void OnCreatedOnUtcChanged();
    partial void OnUpdatedOnUtcChanging(System.DateTime value);
    partial void OnUpdatedOnUtcChanged();
    #endregion
		
		public Nop280_Manufacturer()
		{
			this._Product_Manufacturer_Mappings = new EntitySet<Nop280_Product_Manufacturer_Mapping>(new Action<Nop280_Product_Manufacturer_Mapping>(this.attach_Product_Manufacturer_Mappings), new Action<Nop280_Product_Manufacturer_Mapping>(this.detach_Product_Manufacturer_Mappings));
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(400) NOT NULL", CanBeNull=false)]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Description", DbType="NVarChar(MAX)")]
		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="_ManufacturerTemplateId", DbType="Int NOT NULL")]
		public int ManufacturerTemplateId
		{
			get
			{
				return this._ManufacturerTemplateId;
			}
			set
			{
				if ((this._ManufacturerTemplateId != value))
				{
					this.OnManufacturerTemplateIdChanging(value);
					this.SendPropertyChanging();
					this._ManufacturerTemplateId = value;
					this.SendPropertyChanged("ManufacturerTemplateId");
					this.OnManufacturerTemplateIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MetaKeywords", DbType="NVarChar(400)")]
		public string MetaKeywords
		{
			get
			{
				return this._MetaKeywords;
			}
			set
			{
				if ((this._MetaKeywords != value))
				{
					this.OnMetaKeywordsChanging(value);
					this.SendPropertyChanging();
					this._MetaKeywords = value;
					this.SendPropertyChanged("MetaKeywords");
					this.OnMetaKeywordsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MetaDescription", DbType="NVarChar(MAX)")]
		public string MetaDescription
		{
			get
			{
				return this._MetaDescription;
			}
			set
			{
				if ((this._MetaDescription != value))
				{
					this.OnMetaDescriptionChanging(value);
					this.SendPropertyChanging();
					this._MetaDescription = value;
					this.SendPropertyChanged("MetaDescription");
					this.OnMetaDescriptionChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MetaTitle", DbType="NVarChar(400)")]
		public string MetaTitle
		{
			get
			{
				return this._MetaTitle;
			}
			set
			{
				if ((this._MetaTitle != value))
				{
					this.OnMetaTitleChanging(value);
					this.SendPropertyChanging();
					this._MetaTitle = value;
					this.SendPropertyChanged("MetaTitle");
					this.OnMetaTitleChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PictureId", DbType="Int NOT NULL")]
		public int PictureId
		{
			get
			{
				return this._PictureId;
			}
			set
			{
				if ((this._PictureId != value))
				{
					this.OnPictureIdChanging(value);
					this.SendPropertyChanging();
					this._PictureId = value;
					this.SendPropertyChanged("PictureId");
					this.OnPictureIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PageSize", DbType="Int NOT NULL")]
		public int PageSize
		{
			get
			{
				return this._PageSize;
			}
			set
			{
				if ((this._PageSize != value))
				{
					this.OnPageSizeChanging(value);
					this.SendPropertyChanging();
					this._PageSize = value;
					this.SendPropertyChanged("PageSize");
					this.OnPageSizeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AllowCustomersToSelectPageSize", DbType="Bit NOT NULL")]
		public bool AllowCustomersToSelectPageSize
		{
			get
			{
				return this._AllowCustomersToSelectPageSize;
			}
			set
			{
				if ((this._AllowCustomersToSelectPageSize != value))
				{
					this.OnAllowCustomersToSelectPageSizeChanging(value);
					this.SendPropertyChanging();
					this._AllowCustomersToSelectPageSize = value;
					this.SendPropertyChanged("AllowCustomersToSelectPageSize");
					this.OnAllowCustomersToSelectPageSizeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PageSizeOptions", DbType="NVarChar(200)")]
		public string PageSizeOptions
		{
			get
			{
				return this._PageSizeOptions;
			}
			set
			{
				if ((this._PageSizeOptions != value))
				{
					this.OnPageSizeOptionsChanging(value);
					this.SendPropertyChanging();
					this._PageSizeOptions = value;
					this.SendPropertyChanged("PageSizeOptions");
					this.OnPageSizeOptionsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PriceRanges", DbType="NVarChar(400)")]
		public string PriceRanges
		{
			get
			{
				return this._PriceRanges;
			}
			set
			{
				if ((this._PriceRanges != value))
				{
					this.OnPriceRangesChanging(value);
					this.SendPropertyChanging();
					this._PriceRanges = value;
					this.SendPropertyChanged("PriceRanges");
					this.OnPriceRangesChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SubjectToAcl", DbType="Bit NOT NULL")]
		public bool SubjectToAcl
		{
			get
			{
				return this._SubjectToAcl;
			}
			set
			{
				if ((this._SubjectToAcl != value))
				{
					this.OnSubjectToAclChanging(value);
					this.SendPropertyChanging();
					this._SubjectToAcl = value;
					this.SendPropertyChanged("SubjectToAcl");
					this.OnSubjectToAclChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Published", DbType="Bit NOT NULL")]
		public bool Published
		{
			get
			{
				return this._Published;
			}
			set
			{
				if ((this._Published != value))
				{
					this.OnPublishedChanging(value);
					this.SendPropertyChanging();
					this._Published = value;
					this.SendPropertyChanged("Published");
					this.OnPublishedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Deleted", DbType="Bit NOT NULL")]
		public bool Deleted
		{
			get
			{
				return this._Deleted;
			}
			set
			{
				if ((this._Deleted != value))
				{
					this.OnDeletedChanging(value);
					this.SendPropertyChanging();
					this._Deleted = value;
					this.SendPropertyChanged("Deleted");
					this.OnDeletedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CreatedOnUtc", DbType="DateTime NOT NULL")]
		public System.DateTime CreatedOnUtc
		{
			get
			{
				return this._CreatedOnUtc;
			}
			set
			{
				if ((this._CreatedOnUtc != value))
				{
					this.OnCreatedOnUtcChanging(value);
					this.SendPropertyChanging();
					this._CreatedOnUtc = value;
					this.SendPropertyChanged("CreatedOnUtc");
					this.OnCreatedOnUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UpdatedOnUtc", DbType="DateTime NOT NULL")]
		public System.DateTime UpdatedOnUtc
		{
			get
			{
				return this._UpdatedOnUtc;
			}
			set
			{
				if ((this._UpdatedOnUtc != value))
				{
					this.OnUpdatedOnUtcChanging(value);
					this.SendPropertyChanging();
					this._UpdatedOnUtc = value;
					this.SendPropertyChanged("UpdatedOnUtc");
					this.OnUpdatedOnUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Manufacturer_Nop280_Product_Manufacturer_Mapping", Storage="_Product_Manufacturer_Mappings", ThisKey="Id", OtherKey="ManufacturerId")]
		public EntitySet<Nop280_Product_Manufacturer_Mapping> Nop280_Product_Manufacturer_Mappings
		{
			get
			{
				return this._Product_Manufacturer_Mappings;
			}
			set
			{
				this._Product_Manufacturer_Mappings.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_Product_Manufacturer_Mappings(Nop280_Product_Manufacturer_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Manufacturer = this;
		}
		
		private void detach_Product_Manufacturer_Mappings(Nop280_Product_Manufacturer_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Manufacturer = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Category")]
	public partial class Nop280_Category : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private string _Name;
		
		private string _Description;
		
		private int _CategoryTemplateId;
		
		private string _MetaKeywords;
		
		private string _MetaDescription;
		
		private string _MetaTitle;
		
		private int _ParentCategoryId;
		
		private int _PictureId;
		
		private int _PageSize;
		
		private bool _AllowCustomersToSelectPageSize;
		
		private string _PageSizeOptions;
		
		private string _PriceRanges;
		
		private bool _ShowOnHomePage;
		
		private bool _HasDiscountsApplied;
		
		private bool _SubjectToAcl;
		
		private bool _Published;
		
		private bool _Deleted;
		
		private int _DisplayOrder;
		
		private System.DateTime _CreatedOnUtc;
		
		private System.DateTime _UpdatedOnUtc;
		
		private EntitySet<Nop280_Product_Category_Mapping> _Product_Category_Mappings;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnDescriptionChanging(string value);
    partial void OnDescriptionChanged();
    partial void OnCategoryTemplateIdChanging(int value);
    partial void OnCategoryTemplateIdChanged();
    partial void OnMetaKeywordsChanging(string value);
    partial void OnMetaKeywordsChanged();
    partial void OnMetaDescriptionChanging(string value);
    partial void OnMetaDescriptionChanged();
    partial void OnMetaTitleChanging(string value);
    partial void OnMetaTitleChanged();
    partial void OnParentCategoryIdChanging(int value);
    partial void OnParentCategoryIdChanged();
    partial void OnPictureIdChanging(int value);
    partial void OnPictureIdChanged();
    partial void OnPageSizeChanging(int value);
    partial void OnPageSizeChanged();
    partial void OnAllowCustomersToSelectPageSizeChanging(bool value);
    partial void OnAllowCustomersToSelectPageSizeChanged();
    partial void OnPageSizeOptionsChanging(string value);
    partial void OnPageSizeOptionsChanged();
    partial void OnPriceRangesChanging(string value);
    partial void OnPriceRangesChanged();
    partial void OnShowOnHomePageChanging(bool value);
    partial void OnShowOnHomePageChanged();
    partial void OnHasDiscountsAppliedChanging(bool value);
    partial void OnHasDiscountsAppliedChanged();
    partial void OnSubjectToAclChanging(bool value);
    partial void OnSubjectToAclChanged();
    partial void OnPublishedChanging(bool value);
    partial void OnPublishedChanged();
    partial void OnDeletedChanging(bool value);
    partial void OnDeletedChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    partial void OnCreatedOnUtcChanging(System.DateTime value);
    partial void OnCreatedOnUtcChanged();
    partial void OnUpdatedOnUtcChanging(System.DateTime value);
    partial void OnUpdatedOnUtcChanged();
    #endregion
		
		public Nop280_Category()
		{
			this._Product_Category_Mappings = new EntitySet<Nop280_Product_Category_Mapping>(new Action<Nop280_Product_Category_Mapping>(this.attach_Product_Category_Mappings), new Action<Nop280_Product_Category_Mapping>(this.detach_Product_Category_Mappings));
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(400) NOT NULL", CanBeNull=false)]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Description", DbType="NVarChar(MAX)")]
		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="_CategoryTemplateId", DbType="Int NOT NULL")]
		public int CategoryTemplateId
		{
			get
			{
				return this._CategoryTemplateId;
			}
			set
			{
				if ((this._CategoryTemplateId != value))
				{
					this.OnCategoryTemplateIdChanging(value);
					this.SendPropertyChanging();
					this._CategoryTemplateId = value;
					this.SendPropertyChanged("CategoryTemplateId");
					this.OnCategoryTemplateIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MetaKeywords", DbType="NVarChar(400)")]
		public string MetaKeywords
		{
			get
			{
				return this._MetaKeywords;
			}
			set
			{
				if ((this._MetaKeywords != value))
				{
					this.OnMetaKeywordsChanging(value);
					this.SendPropertyChanging();
					this._MetaKeywords = value;
					this.SendPropertyChanged("MetaKeywords");
					this.OnMetaKeywordsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MetaDescription", DbType="NVarChar(MAX)")]
		public string MetaDescription
		{
			get
			{
				return this._MetaDescription;
			}
			set
			{
				if ((this._MetaDescription != value))
				{
					this.OnMetaDescriptionChanging(value);
					this.SendPropertyChanging();
					this._MetaDescription = value;
					this.SendPropertyChanged("MetaDescription");
					this.OnMetaDescriptionChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MetaTitle", DbType="NVarChar(400)")]
		public string MetaTitle
		{
			get
			{
				return this._MetaTitle;
			}
			set
			{
				if ((this._MetaTitle != value))
				{
					this.OnMetaTitleChanging(value);
					this.SendPropertyChanging();
					this._MetaTitle = value;
					this.SendPropertyChanged("MetaTitle");
					this.OnMetaTitleChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ParentCategoryId", DbType="Int NOT NULL")]
		public int ParentCategoryId
		{
			get
			{
				return this._ParentCategoryId;
			}
			set
			{
				if ((this._ParentCategoryId != value))
				{
					this.OnParentCategoryIdChanging(value);
					this.SendPropertyChanging();
					this._ParentCategoryId = value;
					this.SendPropertyChanged("ParentCategoryId");
					this.OnParentCategoryIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PictureId", DbType="Int NOT NULL")]
		public int PictureId
		{
			get
			{
				return this._PictureId;
			}
			set
			{
				if ((this._PictureId != value))
				{
					this.OnPictureIdChanging(value);
					this.SendPropertyChanging();
					this._PictureId = value;
					this.SendPropertyChanged("PictureId");
					this.OnPictureIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PageSize", DbType="Int NOT NULL")]
		public int PageSize
		{
			get
			{
				return this._PageSize;
			}
			set
			{
				if ((this._PageSize != value))
				{
					this.OnPageSizeChanging(value);
					this.SendPropertyChanging();
					this._PageSize = value;
					this.SendPropertyChanged("PageSize");
					this.OnPageSizeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AllowCustomersToSelectPageSize", DbType="Bit NOT NULL")]
		public bool AllowCustomersToSelectPageSize
		{
			get
			{
				return this._AllowCustomersToSelectPageSize;
			}
			set
			{
				if ((this._AllowCustomersToSelectPageSize != value))
				{
					this.OnAllowCustomersToSelectPageSizeChanging(value);
					this.SendPropertyChanging();
					this._AllowCustomersToSelectPageSize = value;
					this.SendPropertyChanged("AllowCustomersToSelectPageSize");
					this.OnAllowCustomersToSelectPageSizeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PageSizeOptions", DbType="NVarChar(200)")]
		public string PageSizeOptions
		{
			get
			{
				return this._PageSizeOptions;
			}
			set
			{
				if ((this._PageSizeOptions != value))
				{
					this.OnPageSizeOptionsChanging(value);
					this.SendPropertyChanging();
					this._PageSizeOptions = value;
					this.SendPropertyChanged("PageSizeOptions");
					this.OnPageSizeOptionsChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PriceRanges", DbType="NVarChar(400)")]
		public string PriceRanges
		{
			get
			{
				return this._PriceRanges;
			}
			set
			{
				if ((this._PriceRanges != value))
				{
					this.OnPriceRangesChanging(value);
					this.SendPropertyChanging();
					this._PriceRanges = value;
					this.SendPropertyChanged("PriceRanges");
					this.OnPriceRangesChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShowOnHomePage", DbType="Bit NOT NULL")]
		public bool ShowOnHomePage
		{
			get
			{
				return this._ShowOnHomePage;
			}
			set
			{
				if ((this._ShowOnHomePage != value))
				{
					this.OnShowOnHomePageChanging(value);
					this.SendPropertyChanging();
					this._ShowOnHomePage = value;
					this.SendPropertyChanged("ShowOnHomePage");
					this.OnShowOnHomePageChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_HasDiscountsApplied", DbType="Bit NOT NULL")]
		public bool HasDiscountsApplied
		{
			get
			{
				return this._HasDiscountsApplied;
			}
			set
			{
				if ((this._HasDiscountsApplied != value))
				{
					this.OnHasDiscountsAppliedChanging(value);
					this.SendPropertyChanging();
					this._HasDiscountsApplied = value;
					this.SendPropertyChanged("HasDiscountsApplied");
					this.OnHasDiscountsAppliedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SubjectToAcl", DbType="Bit NOT NULL")]
		public bool SubjectToAcl
		{
			get
			{
				return this._SubjectToAcl;
			}
			set
			{
				if ((this._SubjectToAcl != value))
				{
					this.OnSubjectToAclChanging(value);
					this.SendPropertyChanging();
					this._SubjectToAcl = value;
					this.SendPropertyChanged("SubjectToAcl");
					this.OnSubjectToAclChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Published", DbType="Bit NOT NULL")]
		public bool Published
		{
			get
			{
				return this._Published;
			}
			set
			{
				if ((this._Published != value))
				{
					this.OnPublishedChanging(value);
					this.SendPropertyChanging();
					this._Published = value;
					this.SendPropertyChanged("Published");
					this.OnPublishedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Deleted", DbType="Bit NOT NULL")]
		public bool Deleted
		{
			get
			{
				return this._Deleted;
			}
			set
			{
				if ((this._Deleted != value))
				{
					this.OnDeletedChanging(value);
					this.SendPropertyChanging();
					this._Deleted = value;
					this.SendPropertyChanged("Deleted");
					this.OnDeletedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CreatedOnUtc", DbType="DateTime NOT NULL")]
		public System.DateTime CreatedOnUtc
		{
			get
			{
				return this._CreatedOnUtc;
			}
			set
			{
				if ((this._CreatedOnUtc != value))
				{
					this.OnCreatedOnUtcChanging(value);
					this.SendPropertyChanging();
					this._CreatedOnUtc = value;
					this.SendPropertyChanged("CreatedOnUtc");
					this.OnCreatedOnUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UpdatedOnUtc", DbType="DateTime NOT NULL")]
		public System.DateTime UpdatedOnUtc
		{
			get
			{
				return this._UpdatedOnUtc;
			}
			set
			{
				if ((this._UpdatedOnUtc != value))
				{
					this.OnUpdatedOnUtcChanging(value);
					this.SendPropertyChanging();
					this._UpdatedOnUtc = value;
					this.SendPropertyChanged("UpdatedOnUtc");
					this.OnUpdatedOnUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Category_Nop280_Product_Category_Mapping", Storage="_Product_Category_Mappings", ThisKey="Id", OtherKey="CategoryId")]
		public EntitySet<Nop280_Product_Category_Mapping> Nop280_Product_Category_Mappings
		{
			get
			{
				return this._Product_Category_Mappings;
			}
			set
			{
				this._Product_Category_Mappings.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_Product_Category_Mappings(Nop280_Product_Category_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Category = this;
		}
		
		private void detach_Product_Category_Mappings(Nop280_Product_Category_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Category = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.SpecificationAttributeOption")]
	public partial class Nop280_SpecificationAttributeOption : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _SpecificationAttributeId;
		
		private string _Name;
		
		private int _DisplayOrder;
		
		private EntitySet<Nop280_Product_SpecificationAttribute_Mapping> _Product_SpecificationAttribute_Mappings;
		
		private EntityRef<Nop280_SpecificationAttribute> _SpecificationAttribute;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnSpecificationAttributeIdChanging(int value);
    partial void OnSpecificationAttributeIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    #endregion
		
		public Nop280_SpecificationAttributeOption()
		{
			this._Product_SpecificationAttribute_Mappings = new EntitySet<Nop280_Product_SpecificationAttribute_Mapping>(new Action<Nop280_Product_SpecificationAttribute_Mapping>(this.attach_Product_SpecificationAttribute_Mappings), new Action<Nop280_Product_SpecificationAttribute_Mapping>(this.detach_Product_SpecificationAttribute_Mappings));
			this._SpecificationAttribute = default(EntityRef<Nop280_SpecificationAttribute>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SpecificationAttributeId", DbType="Int NOT NULL")]
		public int SpecificationAttributeId
		{
			get
			{
				return this._SpecificationAttributeId;
			}
			set
			{
				if ((this._SpecificationAttributeId != value))
				{
					if (this._SpecificationAttribute.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnSpecificationAttributeIdChanging(value);
					this.SendPropertyChanging();
					this._SpecificationAttributeId = value;
					this.SendPropertyChanged("SpecificationAttributeId");
					this.OnSpecificationAttributeIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(MAX) NOT NULL", CanBeNull=false)]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_SpecificationAttributeOption_Nop280_Product_SpecificationAttribute_Mapping" +
			"", Storage="_Product_SpecificationAttribute_Mappings", ThisKey="Id", OtherKey="SpecificationAttributeOptionId")]
		public EntitySet<Nop280_Product_SpecificationAttribute_Mapping> Nop280_Product_SpecificationAttribute_Mappings
		{
			get
			{
				return this._Product_SpecificationAttribute_Mappings;
			}
			set
			{
				this._Product_SpecificationAttribute_Mappings.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_SpecificationAttribute_Nop280_SpecificationAttributeOption", Storage="_SpecificationAttribute", ThisKey="SpecificationAttributeId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_SpecificationAttribute Nop280_SpecificationAttribute
		{
			get
			{
				return this._SpecificationAttribute.Entity;
			}
			set
			{
				Nop280_SpecificationAttribute previousValue = this._SpecificationAttribute.Entity;
				if (((previousValue != value) 
							|| (this._SpecificationAttribute.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._SpecificationAttribute.Entity = null;
						previousValue.Nop280_SpecificationAttributeOptions.Remove(this);
					}
					this._SpecificationAttribute.Entity = value;
					if ((value != null))
					{
						value.Nop280_SpecificationAttributeOptions.Add(this);
						this._SpecificationAttributeId = value.Id;
					}
					else
					{
						this._SpecificationAttributeId = default(int);
					}
					this.SendPropertyChanged("Nop280_SpecificationAttribute");
				}
			}
		}
		
		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_Product_SpecificationAttribute_Mappings(Nop280_Product_SpecificationAttribute_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_SpecificationAttributeOption = this;
		}
		
		private void detach_Product_SpecificationAttribute_Mappings(Nop280_Product_SpecificationAttribute_Mapping entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_SpecificationAttributeOption = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.SpecificationAttribute")]
	public partial class Nop280_SpecificationAttribute : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private string _Name;
		
		private int _DisplayOrder;
		
		private EntitySet<Nop280_SpecificationAttributeOption> _SpecificationAttributeOptions;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    #endregion
		
		public Nop280_SpecificationAttribute()
		{
			this._SpecificationAttributeOptions = new EntitySet<Nop280_SpecificationAttributeOption>(new Action<Nop280_SpecificationAttributeOption>(this.attach_SpecificationAttributeOptions), new Action<Nop280_SpecificationAttributeOption>(this.detach_SpecificationAttributeOptions));
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(MAX) NOT NULL", CanBeNull=false)]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_SpecificationAttribute_Nop280_SpecificationAttributeOption", Storage="_SpecificationAttributeOptions", ThisKey="Id", OtherKey="SpecificationAttributeId")]
		public EntitySet<Nop280_SpecificationAttributeOption> Nop280_SpecificationAttributeOptions
		{
			get
			{
				return this._SpecificationAttributeOptions;
			}
			set
			{
				this._SpecificationAttributeOptions.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_SpecificationAttributeOptions(Nop280_SpecificationAttributeOption entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_SpecificationAttribute = this;
		}
		
		private void detach_SpecificationAttributeOptions(Nop280_SpecificationAttributeOption entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_SpecificationAttribute = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.TaxCategory")]
	public partial class Nop280_TaxCategory : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private string _Name;
		
		private int _DisplayOrder;
		
		private EntitySet<Nop280_ProductVariant> _ProductVariants;
		
		private EntityRef<Nop280_TaxRate> _TaxRate;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    #endregion
		
		public Nop280_TaxCategory()
		{
			this._ProductVariants = new EntitySet<Nop280_ProductVariant>(new Action<Nop280_ProductVariant>(this.attach_ProductVariants), new Action<Nop280_ProductVariant>(this.detach_ProductVariants));
			this._TaxRate = default(EntityRef<Nop280_TaxRate>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					if (this._TaxRate.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(400) NOT NULL", CanBeNull=false)]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="TaxCategory_ProductVariant", Storage="_ProductVariants", ThisKey="Id", OtherKey="TaxCategoryId")]
		public EntitySet<Nop280_ProductVariant> Nop280_ProductVariants
		{
			get
			{
				return this._ProductVariants;
			}
			set
			{
				this._ProductVariants.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="TaxRate_TaxCategory", Storage="_TaxRate", ThisKey="Id", OtherKey="TaxCategoryId", IsForeignKey=true)]
		public Nop280_TaxRate Nop280_TaxRate
		{
			get
			{
				return this._TaxRate.Entity;
			}
			set
			{
				Nop280_TaxRate previousValue = this._TaxRate.Entity;
				if (((previousValue != value) 
							|| (this._TaxRate.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._TaxRate.Entity = null;
						previousValue.Nop280_TaxCategories.Remove(this);
					}
					this._TaxRate.Entity = value;
					if ((value != null))
					{
						value.Nop280_TaxCategories.Add(this);
						this._Id = value.TaxCategoryId;
					}
					else
					{
						this._Id = default(int);
					}
					this.SendPropertyChanged("Nop280_TaxRate");
				}
			}
		}
		
		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_ProductVariants(Nop280_ProductVariant entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_TaxCategory = this;
		}
		
		private void detach_ProductVariants(Nop280_ProductVariant entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_TaxCategory = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.TaxRate")]
	public partial class Nop280_TaxRate : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _TaxCategoryId;
		
		private int _CountryId;
		
		private int _StateProvinceId;
		
		private string _Zip;
		
		private decimal _Percentage;
		
		private EntitySet<Nop280_TaxCategory> _TaxCategories;
		
		private EntityRef<Nop280_StateProvince> _StateProvince;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnTaxCategoryIdChanging(int value);
    partial void OnTaxCategoryIdChanged();
    partial void OnCountryIdChanging(int value);
    partial void OnCountryIdChanged();
    partial void OnStateProvinceIdChanging(int value);
    partial void OnStateProvinceIdChanged();
    partial void OnZipChanging(string value);
    partial void OnZipChanged();
    partial void OnPercentageChanging(decimal value);
    partial void OnPercentageChanged();
    #endregion
		
		public Nop280_TaxRate()
		{
			this._TaxCategories = new EntitySet<Nop280_TaxCategory>(new Action<Nop280_TaxCategory>(this.attach_TaxCategories), new Action<Nop280_TaxCategory>(this.detach_TaxCategories));
			this._StateProvince = default(EntityRef<Nop280_StateProvince>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TaxCategoryId", DbType="Int NOT NULL")]
		public int TaxCategoryId
		{
			get
			{
				return this._TaxCategoryId;
			}
			set
			{
				if ((this._TaxCategoryId != value))
				{
					this.OnTaxCategoryIdChanging(value);
					this.SendPropertyChanging();
					this._TaxCategoryId = value;
					this.SendPropertyChanged("TaxCategoryId");
					this.OnTaxCategoryIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CountryId", DbType="Int NOT NULL")]
		public int CountryId
		{
			get
			{
				return this._CountryId;
			}
			set
			{
				if ((this._CountryId != value))
				{
					this.OnCountryIdChanging(value);
					this.SendPropertyChanging();
					this._CountryId = value;
					this.SendPropertyChanged("CountryId");
					this.OnCountryIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StateProvinceId", DbType="Int NOT NULL")]
		public int StateProvinceId
		{
			get
			{
				return this._StateProvinceId;
			}
			set
			{
				if ((this._StateProvinceId != value))
				{
					if (this._StateProvince.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnStateProvinceIdChanging(value);
					this.SendPropertyChanging();
					this._StateProvinceId = value;
					this.SendPropertyChanged("StateProvinceId");
					this.OnStateProvinceIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Zip", DbType="NVarChar(MAX)")]
		public string Zip
		{
			get
			{
				return this._Zip;
			}
			set
			{
				if ((this._Zip != value))
				{
					this.OnZipChanging(value);
					this.SendPropertyChanging();
					this._Zip = value;
					this.SendPropertyChanged("Zip");
					this.OnZipChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Percentage", DbType="Decimal(18,4) NOT NULL")]
		public decimal Percentage
		{
			get
			{
				return this._Percentage;
			}
			set
			{
				if ((this._Percentage != value))
				{
					this.OnPercentageChanging(value);
					this.SendPropertyChanging();
					this._Percentage = value;
					this.SendPropertyChanged("Percentage");
					this.OnPercentageChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="TaxRate_TaxCategory", Storage="_TaxCategories", ThisKey="TaxCategoryId", OtherKey="Id")]
		public EntitySet<Nop280_TaxCategory> Nop280_TaxCategories
		{
			get
			{
				return this._TaxCategories;
			}
			set
			{
				this._TaxCategories.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="StateProvince_TaxRate", Storage="_StateProvince", ThisKey="StateProvinceId", OtherKey="Id", IsForeignKey=true)]
		public Nop280_StateProvince Nop280_StateProvince
		{
			get
			{
				return this._StateProvince.Entity;
			}
			set
			{
				Nop280_StateProvince previousValue = this._StateProvince.Entity;
				if (((previousValue != value) 
							|| (this._StateProvince.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._StateProvince.Entity = null;
						previousValue.Nop280_TaxRates.Remove(this);
					}
					this._StateProvince.Entity = value;
					if ((value != null))
					{
						value.Nop280_TaxRates.Add(this);
						this._StateProvinceId = value.Id;
					}
					else
					{
						this._StateProvinceId = default(int);
					}
					this.SendPropertyChanged("Nop280_StateProvince");
				}
			}
		}
		
		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_TaxCategories(Nop280_TaxCategory entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_TaxRate = this;
		}
		
		private void detach_TaxCategories(Nop280_TaxCategory entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_TaxRate = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Country")]
	public partial class Nop280_Country : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private string _Name;
		
		private bool _AllowsBilling;
		
		private bool _AllowsShipping;
		
		private string _TwoLetterIsoCode;
		
		private string _ThreeLetterIsoCode;
		
		private int _NumericIsoCode;
		
		private bool _SubjectToVat;
		
		private bool _Published;
		
		private int _DisplayOrder;
		
		private EntitySet<Nop280_StateProvince> _StateProvinces;
		
		private EntitySet<Nop280_Address> _Addresses;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnAllowsBillingChanging(bool value);
    partial void OnAllowsBillingChanged();
    partial void OnAllowsShippingChanging(bool value);
    partial void OnAllowsShippingChanged();
    partial void OnTwoLetterIsoCodeChanging(string value);
    partial void OnTwoLetterIsoCodeChanged();
    partial void OnThreeLetterIsoCodeChanging(string value);
    partial void OnThreeLetterIsoCodeChanged();
    partial void OnNumericIsoCodeChanging(int value);
    partial void OnNumericIsoCodeChanged();
    partial void OnSubjectToVatChanging(bool value);
    partial void OnSubjectToVatChanged();
    partial void OnPublishedChanging(bool value);
    partial void OnPublishedChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    #endregion
		
		public Nop280_Country()
		{
			this._StateProvinces = new EntitySet<Nop280_StateProvince>(new Action<Nop280_StateProvince>(this.attach_StateProvinces), new Action<Nop280_StateProvince>(this.detach_StateProvinces));
			this._Addresses = new EntitySet<Nop280_Address>(new Action<Nop280_Address>(this.attach_Addresses), new Action<Nop280_Address>(this.detach_Addresses));
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(100) NOT NULL", CanBeNull=false)]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AllowsBilling", DbType="Bit NOT NULL")]
		public bool AllowsBilling
		{
			get
			{
				return this._AllowsBilling;
			}
			set
			{
				if ((this._AllowsBilling != value))
				{
					this.OnAllowsBillingChanging(value);
					this.SendPropertyChanging();
					this._AllowsBilling = value;
					this.SendPropertyChanged("AllowsBilling");
					this.OnAllowsBillingChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AllowsShipping", DbType="Bit NOT NULL")]
		public bool AllowsShipping
		{
			get
			{
				return this._AllowsShipping;
			}
			set
			{
				if ((this._AllowsShipping != value))
				{
					this.OnAllowsShippingChanging(value);
					this.SendPropertyChanging();
					this._AllowsShipping = value;
					this.SendPropertyChanged("AllowsShipping");
					this.OnAllowsShippingChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TwoLetterIsoCode", DbType="NVarChar(2)")]
		public string TwoLetterIsoCode
		{
			get
			{
				return this._TwoLetterIsoCode;
			}
			set
			{
				if ((this._TwoLetterIsoCode != value))
				{
					this.OnTwoLetterIsoCodeChanging(value);
					this.SendPropertyChanging();
					this._TwoLetterIsoCode = value;
					this.SendPropertyChanged("TwoLetterIsoCode");
					this.OnTwoLetterIsoCodeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ThreeLetterIsoCode", DbType="NVarChar(3)")]
		public string ThreeLetterIsoCode
		{
			get
			{
				return this._ThreeLetterIsoCode;
			}
			set
			{
				if ((this._ThreeLetterIsoCode != value))
				{
					this.OnThreeLetterIsoCodeChanging(value);
					this.SendPropertyChanging();
					this._ThreeLetterIsoCode = value;
					this.SendPropertyChanged("ThreeLetterIsoCode");
					this.OnThreeLetterIsoCodeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NumericIsoCode", DbType="Int NOT NULL")]
		public int NumericIsoCode
		{
			get
			{
				return this._NumericIsoCode;
			}
			set
			{
				if ((this._NumericIsoCode != value))
				{
					this.OnNumericIsoCodeChanging(value);
					this.SendPropertyChanging();
					this._NumericIsoCode = value;
					this.SendPropertyChanged("NumericIsoCode");
					this.OnNumericIsoCodeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SubjectToVat", DbType="Bit NOT NULL")]
		public bool SubjectToVat
		{
			get
			{
				return this._SubjectToVat;
			}
			set
			{
				if ((this._SubjectToVat != value))
				{
					this.OnSubjectToVatChanging(value);
					this.SendPropertyChanging();
					this._SubjectToVat = value;
					this.SendPropertyChanged("SubjectToVat");
					this.OnSubjectToVatChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Published", DbType="Bit NOT NULL")]
		public bool Published
		{
			get
			{
				return this._Published;
			}
			set
			{
				if ((this._Published != value))
				{
					this.OnPublishedChanging(value);
					this.SendPropertyChanging();
					this._Published = value;
					this.SendPropertyChanged("Published");
					this.OnPublishedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Country_StateProvince", Storage="_StateProvinces", ThisKey="Id", OtherKey="CountryId")]
		public EntitySet<Nop280_StateProvince> Nop280_StateProvinces
		{
			get
			{
				return this._StateProvinces;
			}
			set
			{
				this._StateProvinces.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Country_Nop280_Address", Storage="_Addresses", ThisKey="Id", OtherKey="CountryId")]
		public EntitySet<Nop280_Address> Nop280_Addresses
		{
			get
			{
				return this._Addresses;
			}
			set
			{
				this._Addresses.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_StateProvinces(Nop280_StateProvince entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Country = this;
		}
		
		private void detach_StateProvinces(Nop280_StateProvince entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Country = null;
		}
		
		private void attach_Addresses(Nop280_Address entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Country = this;
		}
		
		private void detach_Addresses(Nop280_Address entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Country = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.StateProvince")]
	public partial class Nop280_StateProvince : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _CountryId;
		
		private string _Name;
		
		private string _Abbreviation;
		
		private bool _Published;
		
		private int _DisplayOrder;
		
		private EntitySet<Nop280_TaxRate> _TaxRates;
		
		private EntitySet<Nop280_Address> _Addresses;
		
		private EntityRef<Nop280_Country> _Country;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnCountryIdChanging(int value);
    partial void OnCountryIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnAbbreviationChanging(string value);
    partial void OnAbbreviationChanged();
    partial void OnPublishedChanging(bool value);
    partial void OnPublishedChanged();
    partial void OnDisplayOrderChanging(int value);
    partial void OnDisplayOrderChanged();
    #endregion
		
		public Nop280_StateProvince()
		{
			this._TaxRates = new EntitySet<Nop280_TaxRate>(new Action<Nop280_TaxRate>(this.attach_TaxRates), new Action<Nop280_TaxRate>(this.detach_TaxRates));
			this._Addresses = new EntitySet<Nop280_Address>(new Action<Nop280_Address>(this.attach_Addresses), new Action<Nop280_Address>(this.detach_Addresses));
			this._Country = default(EntityRef<Nop280_Country>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CountryId", DbType="Int NOT NULL")]
		public int CountryId
		{
			get
			{
				return this._CountryId;
			}
			set
			{
				if ((this._CountryId != value))
				{
					if (this._Country.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnCountryIdChanging(value);
					this.SendPropertyChanging();
					this._CountryId = value;
					this.SendPropertyChanged("CountryId");
					this.OnCountryIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(100) NOT NULL", CanBeNull=false)]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Abbreviation", DbType="NVarChar(100)")]
		public string Abbreviation
		{
			get
			{
				return this._Abbreviation;
			}
			set
			{
				if ((this._Abbreviation != value))
				{
					this.OnAbbreviationChanging(value);
					this.SendPropertyChanging();
					this._Abbreviation = value;
					this.SendPropertyChanged("Abbreviation");
					this.OnAbbreviationChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Published", DbType="Bit NOT NULL")]
		public bool Published
		{
			get
			{
				return this._Published;
			}
			set
			{
				if ((this._Published != value))
				{
					this.OnPublishedChanging(value);
					this.SendPropertyChanging();
					this._Published = value;
					this.SendPropertyChanged("Published");
					this.OnPublishedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayOrder", DbType="Int NOT NULL")]
		public int DisplayOrder
		{
			get
			{
				return this._DisplayOrder;
			}
			set
			{
				if ((this._DisplayOrder != value))
				{
					this.OnDisplayOrderChanging(value);
					this.SendPropertyChanging();
					this._DisplayOrder = value;
					this.SendPropertyChanged("DisplayOrder");
					this.OnDisplayOrderChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="StateProvince_TaxRate", Storage="_TaxRates", ThisKey="Id", OtherKey="StateProvinceId")]
		public EntitySet<Nop280_TaxRate> Nop280_TaxRates
		{
			get
			{
				return this._TaxRates;
			}
			set
			{
				this._TaxRates.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="StateProvince_Nop280_Address", Storage="_Addresses", ThisKey="Id", OtherKey="StateProvinceId")]
		public EntitySet<Nop280_Address> Nop280_Addresses
		{
			get
			{
				return this._Addresses;
			}
			set
			{
				this._Addresses.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Country_StateProvince", Storage="_Country", ThisKey="CountryId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Country Nop280_Country
		{
			get
			{
				return this._Country.Entity;
			}
			set
			{
				Nop280_Country previousValue = this._Country.Entity;
				if (((previousValue != value) 
							|| (this._Country.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Country.Entity = null;
						previousValue.Nop280_StateProvinces.Remove(this);
					}
					this._Country.Entity = value;
					if ((value != null))
					{
						value.Nop280_StateProvinces.Add(this);
						this._CountryId = value.Id;
					}
					else
					{
						this._CountryId = default(int);
					}
					this.SendPropertyChanged("Nop280_Country");
				}
			}
		}
		
		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_TaxRates(Nop280_TaxRate entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_StateProvince = this;
		}
		
		private void detach_TaxRates(Nop280_TaxRate entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_StateProvince = null;
		}
		
		private void attach_Addresses(Nop280_Address entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_StateProvince = this;
		}
		
		private void detach_Addresses(Nop280_Address entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_StateProvince = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.TierPrice")]
	public partial class Nop280_TierPrice : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _ProductVariantId;
		
		private System.Nullable<int> _CustomerRoleId;
		
		private int _Quantity;
		
		private decimal _Price;
		
		private EntityRef<Nop280_ProductVariant> _ProductVariant;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnProductVariantIdChanging(int value);
    partial void OnProductVariantIdChanged();
    partial void OnCustomerRoleIdChanging(System.Nullable<int> value);
    partial void OnCustomerRoleIdChanged();
    partial void OnQuantityChanging(int value);
    partial void OnQuantityChanged();
    partial void OnPriceChanging(decimal value);
    partial void OnPriceChanged();
    #endregion
		
		public Nop280_TierPrice()
		{
			this._ProductVariant = default(EntityRef<Nop280_ProductVariant>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductVariantId", DbType="Int NOT NULL")]
		public int ProductVariantId
		{
			get
			{
				return this._ProductVariantId;
			}
			set
			{
				if ((this._ProductVariantId != value))
				{
					if (this._ProductVariant.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnProductVariantIdChanging(value);
					this.SendPropertyChanging();
					this._ProductVariantId = value;
					this.SendPropertyChanged("ProductVariantId");
					this.OnProductVariantIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerRoleId", DbType="Int")]
		public System.Nullable<int> CustomerRoleId
		{
			get
			{
				return this._CustomerRoleId;
			}
			set
			{
				if ((this._CustomerRoleId != value))
				{
					this.OnCustomerRoleIdChanging(value);
					this.SendPropertyChanging();
					this._CustomerRoleId = value;
					this.SendPropertyChanged("CustomerRoleId");
					this.OnCustomerRoleIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Quantity", DbType="Int NOT NULL")]
		public int 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="_Price", DbType="Decimal(18,4) NOT NULL")]
		public decimal Price
		{
			get
			{
				return this._Price;
			}
			set
			{
				if ((this._Price != value))
				{
					this.OnPriceChanging(value);
					this.SendPropertyChanging();
					this._Price = value;
					this.SendPropertyChanged("Price");
					this.OnPriceChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ProductVariant_TierPrice", Storage="_ProductVariant", ThisKey="ProductVariantId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_ProductVariant Nop280_ProductVariant
		{
			get
			{
				return this._ProductVariant.Entity;
			}
			set
			{
				Nop280_ProductVariant previousValue = this._ProductVariant.Entity;
				if (((previousValue != value) 
							|| (this._ProductVariant.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._ProductVariant.Entity = null;
						previousValue.Nop280_TierPrices.Remove(this);
					}
					this._ProductVariant.Entity = value;
					if ((value != null))
					{
						value.Nop280_TierPrices.Add(this);
						this._ProductVariantId = value.Id;
					}
					else
					{
						this._ProductVariantId = default(int);
					}
					this.SendPropertyChanged("Nop280_ProductVariant");
				}
			}
		}
		
		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.Download")]
	public partial class Nop280_Download : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private System.Guid _DownloadGuid;
		
		private bool _UseDownloadUrl;
		
		private string _DownloadUrl;
		
		private System.Data.Linq.Binary _DownloadBinary;
		
		private string _ContentType;
		
		private string _Filename;
		
		private string _Extension;
		
		private bool _IsNew;
		
		private EntitySet<Nop280_ProductVariant> _ProductVariants;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnDownloadGuidChanging(System.Guid value);
    partial void OnDownloadGuidChanged();
    partial void OnUseDownloadUrlChanging(bool value);
    partial void OnUseDownloadUrlChanged();
    partial void OnDownloadUrlChanging(string value);
    partial void OnDownloadUrlChanged();
    partial void OnDownloadBinaryChanging(System.Data.Linq.Binary value);
    partial void OnDownloadBinaryChanged();
    partial void OnContentTypeChanging(string value);
    partial void OnContentTypeChanged();
    partial void OnFilenameChanging(string value);
    partial void OnFilenameChanged();
    partial void OnExtensionChanging(string value);
    partial void OnExtensionChanged();
    partial void OnIsNewChanging(bool value);
    partial void OnIsNewChanged();
    #endregion
		
		public Nop280_Download()
		{
			this._ProductVariants = new EntitySet<Nop280_ProductVariant>(new Action<Nop280_ProductVariant>(this.attach_ProductVariants), new Action<Nop280_ProductVariant>(this.detach_ProductVariants));
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DownloadGuid", DbType="UniqueIdentifier NOT NULL")]
		public System.Guid DownloadGuid
		{
			get
			{
				return this._DownloadGuid;
			}
			set
			{
				if ((this._DownloadGuid != value))
				{
					this.OnDownloadGuidChanging(value);
					this.SendPropertyChanging();
					this._DownloadGuid = value;
					this.SendPropertyChanged("DownloadGuid");
					this.OnDownloadGuidChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UseDownloadUrl", DbType="Bit NOT NULL")]
		public bool UseDownloadUrl
		{
			get
			{
				return this._UseDownloadUrl;
			}
			set
			{
				if ((this._UseDownloadUrl != value))
				{
					this.OnUseDownloadUrlChanging(value);
					this.SendPropertyChanging();
					this._UseDownloadUrl = value;
					this.SendPropertyChanged("UseDownloadUrl");
					this.OnUseDownloadUrlChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DownloadUrl", DbType="NVarChar(MAX)")]
		public string DownloadUrl
		{
			get
			{
				return this._DownloadUrl;
			}
			set
			{
				if ((this._DownloadUrl != value))
				{
					this.OnDownloadUrlChanging(value);
					this.SendPropertyChanging();
					this._DownloadUrl = value;
					this.SendPropertyChanged("DownloadUrl");
					this.OnDownloadUrlChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DownloadBinary", DbType="VarBinary(MAX)", UpdateCheck=UpdateCheck.Never)]
		public System.Data.Linq.Binary DownloadBinary
		{
			get
			{
				return this._DownloadBinary;
			}
			set
			{
				if ((this._DownloadBinary != value))
				{
					this.OnDownloadBinaryChanging(value);
					this.SendPropertyChanging();
					this._DownloadBinary = value;
					this.SendPropertyChanged("DownloadBinary");
					this.OnDownloadBinaryChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ContentType", DbType="NVarChar(MAX)")]
		public string ContentType
		{
			get
			{
				return this._ContentType;
			}
			set
			{
				if ((this._ContentType != value))
				{
					this.OnContentTypeChanging(value);
					this.SendPropertyChanging();
					this._ContentType = value;
					this.SendPropertyChanged("ContentType");
					this.OnContentTypeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Filename", DbType="NVarChar(MAX)")]
		public string Filename
		{
			get
			{
				return this._Filename;
			}
			set
			{
				if ((this._Filename != value))
				{
					this.OnFilenameChanging(value);
					this.SendPropertyChanging();
					this._Filename = value;
					this.SendPropertyChanged("Filename");
					this.OnFilenameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Extension", DbType="NVarChar(MAX)")]
		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="_IsNew", DbType="Bit NOT NULL")]
		public bool IsNew
		{
			get
			{
				return this._IsNew;
			}
			set
			{
				if ((this._IsNew != value))
				{
					this.OnIsNewChanging(value);
					this.SendPropertyChanging();
					this._IsNew = value;
					this.SendPropertyChanged("IsNew");
					this.OnIsNewChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Download_ProductVariant", Storage="_ProductVariants", ThisKey="Id", OtherKey="DownloadId")]
		public EntitySet<Nop280_ProductVariant> Nop280_ProductVariants
		{
			get
			{
				return this._ProductVariants;
			}
			set
			{
				this._ProductVariants.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_ProductVariants(Nop280_ProductVariant entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Download = this;
		}
		
		private void detach_ProductVariants(Nop280_ProductVariant entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Download = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.CustomerAddresses")]
	public partial class Nop280_CustomerAddress : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Customer_Id;
		
		private int _Address_Id;
		
		private EntityRef<Nop280_Customer> _Customer;
		
		private EntityRef<Nop280_Address> _Address;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnCustomer_IdChanging(int value);
    partial void OnCustomer_IdChanged();
    partial void OnAddress_IdChanging(int value);
    partial void OnAddress_IdChanged();
    #endregion
		
		public Nop280_CustomerAddress()
		{
			this._Customer = default(EntityRef<Nop280_Customer>);
			this._Address = default(EntityRef<Nop280_Address>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Customer_Id", DbType="Int NOT NULL", IsPrimaryKey=true)]
		public int Customer_Id
		{
			get
			{
				return this._Customer_Id;
			}
			set
			{
				if ((this._Customer_Id != value))
				{
					if (this._Customer.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnCustomer_IdChanging(value);
					this.SendPropertyChanging();
					this._Customer_Id = value;
					this.SendPropertyChanged("Customer_Id");
					this.OnCustomer_IdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address_Id", DbType="Int NOT NULL", IsPrimaryKey=true)]
		public int Address_Id
		{
			get
			{
				return this._Address_Id;
			}
			set
			{
				if ((this._Address_Id != value))
				{
					if (this._Address.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnAddress_IdChanging(value);
					this.SendPropertyChanging();
					this._Address_Id = value;
					this.SendPropertyChanged("Address_Id");
					this.OnAddress_IdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Customer_Nop280_CustomerAddress", Storage="_Customer", ThisKey="Customer_Id", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Customer Nop280_Customer
		{
			get
			{
				return this._Customer.Entity;
			}
			set
			{
				Nop280_Customer previousValue = this._Customer.Entity;
				if (((previousValue != value) 
							|| (this._Customer.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Customer.Entity = null;
						previousValue.Nop280_CustomerAddresses.Remove(this);
					}
					this._Customer.Entity = value;
					if ((value != null))
					{
						value.Nop280_CustomerAddresses.Add(this);
						this._Customer_Id = value.Id;
					}
					else
					{
						this._Customer_Id = default(int);
					}
					this.SendPropertyChanged("Nop280_Customer");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Address_Nop280_CustomerAddress", Storage="_Address", ThisKey="Address_Id", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Address Nop280_Address
		{
			get
			{
				return this._Address.Entity;
			}
			set
			{
				Nop280_Address previousValue = this._Address.Entity;
				if (((previousValue != value) 
							|| (this._Address.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Address.Entity = null;
						previousValue.Nop280_CustomerAddresses.Remove(this);
					}
					this._Address.Entity = value;
					if ((value != null))
					{
						value.Nop280_CustomerAddresses.Add(this);
						this._Address_Id = value.Id;
					}
					else
					{
						this._Address_Id = default(int);
					}
					this.SendPropertyChanged("Nop280_Address");
				}
			}
		}
		
		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.Customer")]
	public partial class Nop280_Customer : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private System.Guid _CustomerGuid;
		
		private string _Username;
		
		private string _Email;
		
		private string _Password;
		
		private int _PasswordFormatId;
		
		private string _PasswordSalt;
		
		private string _AdminComment;
		
		private System.Nullable<int> _LanguageId;
		
		private System.Nullable<int> _CurrencyId;
		
		private int _TaxDisplayTypeId;
		
		private bool _IsTaxExempt;
		
		private string _VatNumber;
		
		private int _VatNumberStatusId;
		
		private string _SelectedPaymentMethodSystemName;
		
		private string _CheckoutAttributes;
		
		private string _DiscountCouponCode;
		
		private string _GiftCardCouponCodes;
		
		private bool _UseRewardPointsDuringCheckout;
		
		private string _TimeZoneId;
		
		private System.Nullable<int> _AffiliateId;
		
		private bool _Active;
		
		private bool _Deleted;
		
		private bool _IsSystemAccount;
		
		private string _SystemName;
		
		private string _LastIpAddress;
		
		private System.DateTime _CreatedOnUtc;
		
		private System.Nullable<System.DateTime> _LastLoginDateUtc;
		
		private System.DateTime _LastActivityDateUtc;
		
		private System.Nullable<int> _BillingAddress_Id;
		
		private System.Nullable<int> _ShippingAddress_Id;
		
		private EntitySet<Nop280_CustomerAddress> _CustomerAddresses;
		
		private EntitySet<Nop280_Order> _Orders;
		
		private EntityRef<Nop280_Address> _Address;
		
		private EntityRef<Nop280_Address> _Address1;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnCustomerGuidChanging(System.Guid value);
    partial void OnCustomerGuidChanged();
    partial void OnUsernameChanging(string value);
    partial void OnUsernameChanged();
    partial void OnEmailChanging(string value);
    partial void OnEmailChanged();
    partial void OnPasswordChanging(string value);
    partial void OnPasswordChanged();
    partial void OnPasswordFormatIdChanging(int value);
    partial void OnPasswordFormatIdChanged();
    partial void OnPasswordSaltChanging(string value);
    partial void OnPasswordSaltChanged();
    partial void OnAdminCommentChanging(string value);
    partial void OnAdminCommentChanged();
    partial void OnLanguageIdChanging(System.Nullable<int> value);
    partial void OnLanguageIdChanged();
    partial void OnCurrencyIdChanging(System.Nullable<int> value);
    partial void OnCurrencyIdChanged();
    partial void OnTaxDisplayTypeIdChanging(int value);
    partial void OnTaxDisplayTypeIdChanged();
    partial void OnIsTaxExemptChanging(bool value);
    partial void OnIsTaxExemptChanged();
    partial void OnVatNumberChanging(string value);
    partial void OnVatNumberChanged();
    partial void OnVatNumberStatusIdChanging(int value);
    partial void OnVatNumberStatusIdChanged();
    partial void OnSelectedPaymentMethodSystemNameChanging(string value);
    partial void OnSelectedPaymentMethodSystemNameChanged();
    partial void OnCheckoutAttributesChanging(string value);
    partial void OnCheckoutAttributesChanged();
    partial void OnDiscountCouponCodeChanging(string value);
    partial void OnDiscountCouponCodeChanged();
    partial void OnGiftCardCouponCodesChanging(string value);
    partial void OnGiftCardCouponCodesChanged();
    partial void OnUseRewardPointsDuringCheckoutChanging(bool value);
    partial void OnUseRewardPointsDuringCheckoutChanged();
    partial void OnTimeZoneIdChanging(string value);
    partial void OnTimeZoneIdChanged();
    partial void OnAffiliateIdChanging(System.Nullable<int> value);
    partial void OnAffiliateIdChanged();
    partial void OnActiveChanging(bool value);
    partial void OnActiveChanged();
    partial void OnDeletedChanging(bool value);
    partial void OnDeletedChanged();
    partial void OnIsSystemAccountChanging(bool value);
    partial void OnIsSystemAccountChanged();
    partial void OnSystemNameChanging(string value);
    partial void OnSystemNameChanged();
    partial void OnLastIpAddressChanging(string value);
    partial void OnLastIpAddressChanged();
    partial void OnCreatedOnUtcChanging(System.DateTime value);
    partial void OnCreatedOnUtcChanged();
    partial void OnLastLoginDateUtcChanging(System.Nullable<System.DateTime> value);
    partial void OnLastLoginDateUtcChanged();
    partial void OnLastActivityDateUtcChanging(System.DateTime value);
    partial void OnLastActivityDateUtcChanged();
    partial void OnBillingAddress_IdChanging(System.Nullable<int> value);
    partial void OnBillingAddress_IdChanged();
    partial void OnShippingAddress_IdChanging(System.Nullable<int> value);
    partial void OnShippingAddress_IdChanged();
    #endregion
		
		public Nop280_Customer()
		{
			this._CustomerAddresses = new EntitySet<Nop280_CustomerAddress>(new Action<Nop280_CustomerAddress>(this.attach_CustomerAddresses), new Action<Nop280_CustomerAddress>(this.detach_CustomerAddresses));
			this._Orders = new EntitySet<Nop280_Order>(new Action<Nop280_Order>(this.attach_Orders), new Action<Nop280_Order>(this.detach_Orders));
			this._Address = default(EntityRef<Nop280_Address>);
			this._Address1 = default(EntityRef<Nop280_Address>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerGuid", DbType="UniqueIdentifier NOT NULL")]
		public System.Guid CustomerGuid
		{
			get
			{
				return this._CustomerGuid;
			}
			set
			{
				if ((this._CustomerGuid != value))
				{
					this.OnCustomerGuidChanging(value);
					this.SendPropertyChanging();
					this._CustomerGuid = value;
					this.SendPropertyChanged("CustomerGuid");
					this.OnCustomerGuidChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Username", DbType="NVarChar(1000)")]
		public string Username
		{
			get
			{
				return this._Username;
			}
			set
			{
				if ((this._Username != value))
				{
					this.OnUsernameChanging(value);
					this.SendPropertyChanging();
					this._Username = value;
					this.SendPropertyChanged("Username");
					this.OnUsernameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Email", DbType="NVarChar(1000)")]
		public string Email
		{
			get
			{
				return this._Email;
			}
			set
			{
				if ((this._Email != value))
				{
					this.OnEmailChanging(value);
					this.SendPropertyChanging();
					this._Email = value;
					this.SendPropertyChanged("Email");
					this.OnEmailChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Password", DbType="NVarChar(MAX)")]
		public string Password
		{
			get
			{
				return this._Password;
			}
			set
			{
				if ((this._Password != value))
				{
					this.OnPasswordChanging(value);
					this.SendPropertyChanging();
					this._Password = value;
					this.SendPropertyChanged("Password");
					this.OnPasswordChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PasswordFormatId", DbType="Int NOT NULL")]
		public int PasswordFormatId
		{
			get
			{
				return this._PasswordFormatId;
			}
			set
			{
				if ((this._PasswordFormatId != value))
				{
					this.OnPasswordFormatIdChanging(value);
					this.SendPropertyChanging();
					this._PasswordFormatId = value;
					this.SendPropertyChanged("PasswordFormatId");
					this.OnPasswordFormatIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PasswordSalt", DbType="NVarChar(MAX)")]
		public string PasswordSalt
		{
			get
			{
				return this._PasswordSalt;
			}
			set
			{
				if ((this._PasswordSalt != value))
				{
					this.OnPasswordSaltChanging(value);
					this.SendPropertyChanging();
					this._PasswordSalt = value;
					this.SendPropertyChanged("PasswordSalt");
					this.OnPasswordSaltChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AdminComment", DbType="NVarChar(MAX)")]
		public string AdminComment
		{
			get
			{
				return this._AdminComment;
			}
			set
			{
				if ((this._AdminComment != value))
				{
					this.OnAdminCommentChanging(value);
					this.SendPropertyChanging();
					this._AdminComment = value;
					this.SendPropertyChanged("AdminComment");
					this.OnAdminCommentChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LanguageId", DbType="Int")]
		public System.Nullable<int> LanguageId
		{
			get
			{
				return this._LanguageId;
			}
			set
			{
				if ((this._LanguageId != value))
				{
					this.OnLanguageIdChanging(value);
					this.SendPropertyChanging();
					this._LanguageId = value;
					this.SendPropertyChanged("LanguageId");
					this.OnLanguageIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CurrencyId", DbType="Int")]
		public System.Nullable<int> CurrencyId
		{
			get
			{
				return this._CurrencyId;
			}
			set
			{
				if ((this._CurrencyId != value))
				{
					this.OnCurrencyIdChanging(value);
					this.SendPropertyChanging();
					this._CurrencyId = value;
					this.SendPropertyChanged("CurrencyId");
					this.OnCurrencyIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TaxDisplayTypeId", DbType="Int NOT NULL")]
		public int TaxDisplayTypeId
		{
			get
			{
				return this._TaxDisplayTypeId;
			}
			set
			{
				if ((this._TaxDisplayTypeId != value))
				{
					this.OnTaxDisplayTypeIdChanging(value);
					this.SendPropertyChanging();
					this._TaxDisplayTypeId = value;
					this.SendPropertyChanged("TaxDisplayTypeId");
					this.OnTaxDisplayTypeIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsTaxExempt", DbType="Bit NOT NULL")]
		public bool IsTaxExempt
		{
			get
			{
				return this._IsTaxExempt;
			}
			set
			{
				if ((this._IsTaxExempt != value))
				{
					this.OnIsTaxExemptChanging(value);
					this.SendPropertyChanging();
					this._IsTaxExempt = value;
					this.SendPropertyChanged("IsTaxExempt");
					this.OnIsTaxExemptChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_VatNumber", DbType="NVarChar(MAX)")]
		public string VatNumber
		{
			get
			{
				return this._VatNumber;
			}
			set
			{
				if ((this._VatNumber != value))
				{
					this.OnVatNumberChanging(value);
					this.SendPropertyChanging();
					this._VatNumber = value;
					this.SendPropertyChanged("VatNumber");
					this.OnVatNumberChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_VatNumberStatusId", DbType="Int NOT NULL")]
		public int VatNumberStatusId
		{
			get
			{
				return this._VatNumberStatusId;
			}
			set
			{
				if ((this._VatNumberStatusId != value))
				{
					this.OnVatNumberStatusIdChanging(value);
					this.SendPropertyChanging();
					this._VatNumberStatusId = value;
					this.SendPropertyChanged("VatNumberStatusId");
					this.OnVatNumberStatusIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SelectedPaymentMethodSystemName", DbType="NVarChar(MAX)")]
		public string SelectedPaymentMethodSystemName
		{
			get
			{
				return this._SelectedPaymentMethodSystemName;
			}
			set
			{
				if ((this._SelectedPaymentMethodSystemName != value))
				{
					this.OnSelectedPaymentMethodSystemNameChanging(value);
					this.SendPropertyChanging();
					this._SelectedPaymentMethodSystemName = value;
					this.SendPropertyChanged("SelectedPaymentMethodSystemName");
					this.OnSelectedPaymentMethodSystemNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CheckoutAttributes", DbType="NVarChar(MAX)")]
		public string CheckoutAttributes
		{
			get
			{
				return this._CheckoutAttributes;
			}
			set
			{
				if ((this._CheckoutAttributes != value))
				{
					this.OnCheckoutAttributesChanging(value);
					this.SendPropertyChanging();
					this._CheckoutAttributes = value;
					this.SendPropertyChanged("CheckoutAttributes");
					this.OnCheckoutAttributesChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DiscountCouponCode", DbType="NVarChar(MAX)")]
		public string DiscountCouponCode
		{
			get
			{
				return this._DiscountCouponCode;
			}
			set
			{
				if ((this._DiscountCouponCode != value))
				{
					this.OnDiscountCouponCodeChanging(value);
					this.SendPropertyChanging();
					this._DiscountCouponCode = value;
					this.SendPropertyChanged("DiscountCouponCode");
					this.OnDiscountCouponCodeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_GiftCardCouponCodes", DbType="NVarChar(MAX)")]
		public string GiftCardCouponCodes
		{
			get
			{
				return this._GiftCardCouponCodes;
			}
			set
			{
				if ((this._GiftCardCouponCodes != value))
				{
					this.OnGiftCardCouponCodesChanging(value);
					this.SendPropertyChanging();
					this._GiftCardCouponCodes = value;
					this.SendPropertyChanged("GiftCardCouponCodes");
					this.OnGiftCardCouponCodesChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UseRewardPointsDuringCheckout", DbType="Bit NOT NULL")]
		public bool UseRewardPointsDuringCheckout
		{
			get
			{
				return this._UseRewardPointsDuringCheckout;
			}
			set
			{
				if ((this._UseRewardPointsDuringCheckout != value))
				{
					this.OnUseRewardPointsDuringCheckoutChanging(value);
					this.SendPropertyChanging();
					this._UseRewardPointsDuringCheckout = value;
					this.SendPropertyChanged("UseRewardPointsDuringCheckout");
					this.OnUseRewardPointsDuringCheckoutChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TimeZoneId", DbType="NVarChar(MAX)")]
		public string TimeZoneId
		{
			get
			{
				return this._TimeZoneId;
			}
			set
			{
				if ((this._TimeZoneId != value))
				{
					this.OnTimeZoneIdChanging(value);
					this.SendPropertyChanging();
					this._TimeZoneId = value;
					this.SendPropertyChanged("TimeZoneId");
					this.OnTimeZoneIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AffiliateId", DbType="Int")]
		public System.Nullable<int> AffiliateId
		{
			get
			{
				return this._AffiliateId;
			}
			set
			{
				if ((this._AffiliateId != value))
				{
					this.OnAffiliateIdChanging(value);
					this.SendPropertyChanging();
					this._AffiliateId = value;
					this.SendPropertyChanged("AffiliateId");
					this.OnAffiliateIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Active", DbType="Bit NOT NULL")]
		public bool Active
		{
			get
			{
				return this._Active;
			}
			set
			{
				if ((this._Active != value))
				{
					this.OnActiveChanging(value);
					this.SendPropertyChanging();
					this._Active = value;
					this.SendPropertyChanged("Active");
					this.OnActiveChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Deleted", DbType="Bit NOT NULL")]
		public bool Deleted
		{
			get
			{
				return this._Deleted;
			}
			set
			{
				if ((this._Deleted != value))
				{
					this.OnDeletedChanging(value);
					this.SendPropertyChanging();
					this._Deleted = value;
					this.SendPropertyChanged("Deleted");
					this.OnDeletedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsSystemAccount", DbType="Bit NOT NULL")]
		public bool IsSystemAccount
		{
			get
			{
				return this._IsSystemAccount;
			}
			set
			{
				if ((this._IsSystemAccount != value))
				{
					this.OnIsSystemAccountChanging(value);
					this.SendPropertyChanging();
					this._IsSystemAccount = value;
					this.SendPropertyChanged("IsSystemAccount");
					this.OnIsSystemAccountChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SystemName", DbType="NVarChar(MAX)")]
		public string SystemName
		{
			get
			{
				return this._SystemName;
			}
			set
			{
				if ((this._SystemName != value))
				{
					this.OnSystemNameChanging(value);
					this.SendPropertyChanging();
					this._SystemName = value;
					this.SendPropertyChanged("SystemName");
					this.OnSystemNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastIpAddress", DbType="NVarChar(MAX)")]
		public string LastIpAddress
		{
			get
			{
				return this._LastIpAddress;
			}
			set
			{
				if ((this._LastIpAddress != value))
				{
					this.OnLastIpAddressChanging(value);
					this.SendPropertyChanging();
					this._LastIpAddress = value;
					this.SendPropertyChanged("LastIpAddress");
					this.OnLastIpAddressChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CreatedOnUtc", DbType="DateTime NOT NULL")]
		public System.DateTime CreatedOnUtc
		{
			get
			{
				return this._CreatedOnUtc;
			}
			set
			{
				if ((this._CreatedOnUtc != value))
				{
					this.OnCreatedOnUtcChanging(value);
					this.SendPropertyChanging();
					this._CreatedOnUtc = value;
					this.SendPropertyChanged("CreatedOnUtc");
					this.OnCreatedOnUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastLoginDateUtc", DbType="DateTime")]
		public System.Nullable<System.DateTime> LastLoginDateUtc
		{
			get
			{
				return this._LastLoginDateUtc;
			}
			set
			{
				if ((this._LastLoginDateUtc != value))
				{
					this.OnLastLoginDateUtcChanging(value);
					this.SendPropertyChanging();
					this._LastLoginDateUtc = value;
					this.SendPropertyChanged("LastLoginDateUtc");
					this.OnLastLoginDateUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastActivityDateUtc", DbType="DateTime NOT NULL")]
		public System.DateTime LastActivityDateUtc
		{
			get
			{
				return this._LastActivityDateUtc;
			}
			set
			{
				if ((this._LastActivityDateUtc != value))
				{
					this.OnLastActivityDateUtcChanging(value);
					this.SendPropertyChanging();
					this._LastActivityDateUtc = value;
					this.SendPropertyChanged("LastActivityDateUtc");
					this.OnLastActivityDateUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_BillingAddress_Id", DbType="Int")]
		public System.Nullable<int> BillingAddress_Id
		{
			get
			{
				return this._BillingAddress_Id;
			}
			set
			{
				if ((this._BillingAddress_Id != value))
				{
					if (this._Address.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnBillingAddress_IdChanging(value);
					this.SendPropertyChanging();
					this._BillingAddress_Id = value;
					this.SendPropertyChanged("BillingAddress_Id");
					this.OnBillingAddress_IdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShippingAddress_Id", DbType="Int")]
		public System.Nullable<int> ShippingAddress_Id
		{
			get
			{
				return this._ShippingAddress_Id;
			}
			set
			{
				if ((this._ShippingAddress_Id != value))
				{
					if (this._Address1.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnShippingAddress_IdChanging(value);
					this.SendPropertyChanging();
					this._ShippingAddress_Id = value;
					this.SendPropertyChanged("ShippingAddress_Id");
					this.OnShippingAddress_IdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Customer_Nop280_CustomerAddress", Storage="_CustomerAddresses", ThisKey="Id", OtherKey="Customer_Id")]
		public EntitySet<Nop280_CustomerAddress> Nop280_CustomerAddresses
		{
			get
			{
				return this._CustomerAddresses;
			}
			set
			{
				this._CustomerAddresses.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Customer_Nop280_Order", Storage="_Orders", ThisKey="Id", OtherKey="CustomerId")]
		public EntitySet<Nop280_Order> Nop280_Orders
		{
			get
			{
				return this._Orders;
			}
			set
			{
				this._Orders.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Address_Nop280_Customer", Storage="_Address", ThisKey="BillingAddress_Id", OtherKey="Id", IsForeignKey=true)]
		public Nop280_Address Address
		{
			get
			{
				return this._Address.Entity;
			}
			set
			{
				Nop280_Address previousValue = this._Address.Entity;
				if (((previousValue != value) 
							|| (this._Address.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Address.Entity = null;
						previousValue.Customers.Remove(this);
					}
					this._Address.Entity = value;
					if ((value != null))
					{
						value.Customers.Add(this);
						this._BillingAddress_Id = value.Id;
					}
					else
					{
						this._BillingAddress_Id = default(Nullable<int>);
					}
					this.SendPropertyChanged("Address");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Address_Nop280_Customer1", Storage="_Address1", ThisKey="ShippingAddress_Id", OtherKey="Id", IsForeignKey=true)]
		public Nop280_Address Nop280_Address
		{
			get
			{
				return this._Address1.Entity;
			}
			set
			{
				Nop280_Address previousValue = this._Address1.Entity;
				if (((previousValue != value) 
							|| (this._Address1.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Address1.Entity = null;
						previousValue.Nop280_Customers.Remove(this);
					}
					this._Address1.Entity = value;
					if ((value != null))
					{
						value.Nop280_Customers.Add(this);
						this._ShippingAddress_Id = value.Id;
					}
					else
					{
						this._ShippingAddress_Id = default(Nullable<int>);
					}
					this.SendPropertyChanged("Nop280_Address");
				}
			}
		}
		
		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_CustomerAddresses(Nop280_CustomerAddress entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Customer = this;
		}
		
		private void detach_CustomerAddresses(Nop280_CustomerAddress entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Customer = null;
		}
		
		private void attach_Orders(Nop280_Order entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Customer = this;
		}
		
		private void detach_Orders(Nop280_Order entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Customer = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.GenericAttribute")]
	public partial class Nop280_GenericAttribute : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _EntityId;
		
		private string _KeyGroup;
		
		private string _Key;
		
		private string _Value;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnEntityIdChanging(int value);
    partial void OnEntityIdChanged();
    partial void OnKeyGroupChanging(string value);
    partial void OnKeyGroupChanged();
    partial void OnKeyChanging(string value);
    partial void OnKeyChanged();
    partial void OnValueChanging(string value);
    partial void OnValueChanged();
    #endregion
		
		public Nop280_GenericAttribute()
		{
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_EntityId", DbType="Int NOT NULL")]
		public int EntityId
		{
			get
			{
				return this._EntityId;
			}
			set
			{
				if ((this._EntityId != value))
				{
					this.OnEntityIdChanging(value);
					this.SendPropertyChanging();
					this._EntityId = value;
					this.SendPropertyChanged("EntityId");
					this.OnEntityIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_KeyGroup", DbType="NVarChar(400) NOT NULL", CanBeNull=false)]
		public string KeyGroup
		{
			get
			{
				return this._KeyGroup;
			}
			set
			{
				if ((this._KeyGroup != value))
				{
					this.OnKeyGroupChanging(value);
					this.SendPropertyChanging();
					this._KeyGroup = value;
					this.SendPropertyChanged("KeyGroup");
					this.OnKeyGroupChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Name="[Key]", Storage="_Key", DbType="NVarChar(400) NOT NULL", CanBeNull=false)]
		public string Key
		{
			get
			{
				return this._Key;
			}
			set
			{
				if ((this._Key != value))
				{
					this.OnKeyChanging(value);
					this.SendPropertyChanging();
					this._Key = value;
					this.SendPropertyChanged("Key");
					this.OnKeyChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Value", DbType="NVarChar(MAX) NOT NULL", CanBeNull=false)]
		public string Value
		{
			get
			{
				return this._Value;
			}
			set
			{
				if ((this._Value != value))
				{
					this.OnValueChanging(value);
					this.SendPropertyChanging();
					this._Value = value;
					this.SendPropertyChanged("Value");
					this.OnValueChanged();
				}
			}
		}
		
		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.Address")]
	public partial class Nop280_Address : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private string _FirstName;
		
		private string _LastName;
		
		private string _Email;
		
		private string _Company;
		
		private System.Nullable<int> _CountryId;
		
		private System.Nullable<int> _StateProvinceId;
		
		private string _City;
		
		private string _Address1;
		
		private string _Address2;
		
		private string _ZipPostalCode;
		
		private string _PhoneNumber;
		
		private string _FaxNumber;
		
		private System.DateTime _CreatedOnUtc;
		
		private EntitySet<Nop280_CustomerAddress> _CustomerAddresses;
		
		private EntitySet<Nop280_Customer> _Customers;
		
		private EntitySet<Nop280_Customer> _Customers1;
		
		private EntitySet<Nop280_Order> _Orders;
		
		private EntitySet<Nop280_Order> _Orders1;
		
		private EntityRef<Nop280_Country> _Country;
		
		private EntityRef<Nop280_StateProvince> _StateProvince;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnFirstNameChanging(string value);
    partial void OnFirstNameChanged();
    partial void OnLastNameChanging(string value);
    partial void OnLastNameChanged();
    partial void OnEmailChanging(string value);
    partial void OnEmailChanged();
    partial void OnCompanyChanging(string value);
    partial void OnCompanyChanged();
    partial void OnCountryIdChanging(System.Nullable<int> value);
    partial void OnCountryIdChanged();
    partial void OnStateProvinceIdChanging(System.Nullable<int> value);
    partial void OnStateProvinceIdChanged();
    partial void OnCityChanging(string value);
    partial void OnCityChanged();
    partial void OnAddress1Changing(string value);
    partial void OnAddress1Changed();
    partial void OnAddress2Changing(string value);
    partial void OnAddress2Changed();
    partial void OnZipPostalCodeChanging(string value);
    partial void OnZipPostalCodeChanged();
    partial void OnPhoneNumberChanging(string value);
    partial void OnPhoneNumberChanged();
    partial void OnFaxNumberChanging(string value);
    partial void OnFaxNumberChanged();
    partial void OnCreatedOnUtcChanging(System.DateTime value);
    partial void OnCreatedOnUtcChanged();
    #endregion
		
		public Nop280_Address()
		{
			this._CustomerAddresses = new EntitySet<Nop280_CustomerAddress>(new Action<Nop280_CustomerAddress>(this.attach_CustomerAddresses), new Action<Nop280_CustomerAddress>(this.detach_CustomerAddresses));
			this._Customers = new EntitySet<Nop280_Customer>(new Action<Nop280_Customer>(this.attach_Customers), new Action<Nop280_Customer>(this.detach_Customers));
			this._Customers1 = new EntitySet<Nop280_Customer>(new Action<Nop280_Customer>(this.attach_Customers1), new Action<Nop280_Customer>(this.detach_Customers1));
			this._Orders = new EntitySet<Nop280_Order>(new Action<Nop280_Order>(this.attach_Orders), new Action<Nop280_Order>(this.detach_Orders));
			this._Orders1 = new EntitySet<Nop280_Order>(new Action<Nop280_Order>(this.attach_Orders1), new Action<Nop280_Order>(this.detach_Orders1));
			this._Country = default(EntityRef<Nop280_Country>);
			this._StateProvince = default(EntityRef<Nop280_StateProvince>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FirstName", DbType="NVarChar(MAX)")]
		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="_LastName", DbType="NVarChar(MAX)")]
		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="_Email", DbType="NVarChar(MAX)")]
		public string Email
		{
			get
			{
				return this._Email;
			}
			set
			{
				if ((this._Email != value))
				{
					this.OnEmailChanging(value);
					this.SendPropertyChanging();
					this._Email = value;
					this.SendPropertyChanged("Email");
					this.OnEmailChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Company", DbType="NVarChar(MAX)")]
		public string Company
		{
			get
			{
				return this._Company;
			}
			set
			{
				if ((this._Company != value))
				{
					this.OnCompanyChanging(value);
					this.SendPropertyChanging();
					this._Company = value;
					this.SendPropertyChanged("Company");
					this.OnCompanyChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CountryId", DbType="Int")]
		public System.Nullable<int> CountryId
		{
			get
			{
				return this._CountryId;
			}
			set
			{
				if ((this._CountryId != value))
				{
					if (this._Country.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnCountryIdChanging(value);
					this.SendPropertyChanging();
					this._CountryId = value;
					this.SendPropertyChanged("CountryId");
					this.OnCountryIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StateProvinceId", DbType="Int")]
		public System.Nullable<int> StateProvinceId
		{
			get
			{
				return this._StateProvinceId;
			}
			set
			{
				if ((this._StateProvinceId != value))
				{
					if (this._StateProvince.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnStateProvinceIdChanging(value);
					this.SendPropertyChanging();
					this._StateProvinceId = value;
					this.SendPropertyChanged("StateProvinceId");
					this.OnStateProvinceIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_City", DbType="NVarChar(MAX)")]
		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="_Address1", DbType="NVarChar(MAX)")]
		public string Address1
		{
			get
			{
				return this._Address1;
			}
			set
			{
				if ((this._Address1 != value))
				{
					this.OnAddress1Changing(value);
					this.SendPropertyChanging();
					this._Address1 = value;
					this.SendPropertyChanged("Address1");
					this.OnAddress1Changed();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address2", DbType="NVarChar(MAX)")]
		public string Address2
		{
			get
			{
				return this._Address2;
			}
			set
			{
				if ((this._Address2 != value))
				{
					this.OnAddress2Changing(value);
					this.SendPropertyChanging();
					this._Address2 = value;
					this.SendPropertyChanged("Address2");
					this.OnAddress2Changed();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ZipPostalCode", DbType="NVarChar(MAX)")]
		public string ZipPostalCode
		{
			get
			{
				return this._ZipPostalCode;
			}
			set
			{
				if ((this._ZipPostalCode != value))
				{
					this.OnZipPostalCodeChanging(value);
					this.SendPropertyChanging();
					this._ZipPostalCode = value;
					this.SendPropertyChanged("ZipPostalCode");
					this.OnZipPostalCodeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PhoneNumber", DbType="NVarChar(MAX)")]
		public string PhoneNumber
		{
			get
			{
				return this._PhoneNumber;
			}
			set
			{
				if ((this._PhoneNumber != value))
				{
					this.OnPhoneNumberChanging(value);
					this.SendPropertyChanging();
					this._PhoneNumber = value;
					this.SendPropertyChanged("PhoneNumber");
					this.OnPhoneNumberChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FaxNumber", DbType="NVarChar(MAX)")]
		public string FaxNumber
		{
			get
			{
				return this._FaxNumber;
			}
			set
			{
				if ((this._FaxNumber != value))
				{
					this.OnFaxNumberChanging(value);
					this.SendPropertyChanging();
					this._FaxNumber = value;
					this.SendPropertyChanged("FaxNumber");
					this.OnFaxNumberChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CreatedOnUtc", DbType="DateTime NOT NULL")]
		public System.DateTime CreatedOnUtc
		{
			get
			{
				return this._CreatedOnUtc;
			}
			set
			{
				if ((this._CreatedOnUtc != value))
				{
					this.OnCreatedOnUtcChanging(value);
					this.SendPropertyChanging();
					this._CreatedOnUtc = value;
					this.SendPropertyChanged("CreatedOnUtc");
					this.OnCreatedOnUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Address_Nop280_CustomerAddress", Storage="_CustomerAddresses", ThisKey="Id", OtherKey="Address_Id")]
		public EntitySet<Nop280_CustomerAddress> Nop280_CustomerAddresses
		{
			get
			{
				return this._CustomerAddresses;
			}
			set
			{
				this._CustomerAddresses.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Address_Nop280_Customer", Storage="_Customers", ThisKey="Id", OtherKey="BillingAddress_Id")]
		public EntitySet<Nop280_Customer> Customers
		{
			get
			{
				return this._Customers;
			}
			set
			{
				this._Customers.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Address_Nop280_Customer1", Storage="_Customers1", ThisKey="Id", OtherKey="ShippingAddress_Id")]
		public EntitySet<Nop280_Customer> Nop280_Customers
		{
			get
			{
				return this._Customers1;
			}
			set
			{
				this._Customers1.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Address_Nop280_Order", Storage="_Orders", ThisKey="Id", OtherKey="BillingAddressId")]
		public EntitySet<Nop280_Order> Orders
		{
			get
			{
				return this._Orders;
			}
			set
			{
				this._Orders.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Address_Nop280_Order1", Storage="_Orders1", ThisKey="Id", OtherKey="ShippingAddressId")]
		public EntitySet<Nop280_Order> Nop280_Orders
		{
			get
			{
				return this._Orders1;
			}
			set
			{
				this._Orders1.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Country_Nop280_Address", Storage="_Country", ThisKey="CountryId", OtherKey="Id", IsForeignKey=true)]
		public Nop280_Country Nop280_Country
		{
			get
			{
				return this._Country.Entity;
			}
			set
			{
				Nop280_Country previousValue = this._Country.Entity;
				if (((previousValue != value) 
							|| (this._Country.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Country.Entity = null;
						previousValue.Nop280_Addresses.Remove(this);
					}
					this._Country.Entity = value;
					if ((value != null))
					{
						value.Nop280_Addresses.Add(this);
						this._CountryId = value.Id;
					}
					else
					{
						this._CountryId = default(Nullable<int>);
					}
					this.SendPropertyChanged("Nop280_Country");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="StateProvince_Nop280_Address", Storage="_StateProvince", ThisKey="StateProvinceId", OtherKey="Id", IsForeignKey=true)]
		public Nop280_StateProvince Nop280_StateProvince
		{
			get
			{
				return this._StateProvince.Entity;
			}
			set
			{
				Nop280_StateProvince previousValue = this._StateProvince.Entity;
				if (((previousValue != value) 
							|| (this._StateProvince.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._StateProvince.Entity = null;
						previousValue.Nop280_Addresses.Remove(this);
					}
					this._StateProvince.Entity = value;
					if ((value != null))
					{
						value.Nop280_Addresses.Add(this);
						this._StateProvinceId = value.Id;
					}
					else
					{
						this._StateProvinceId = default(Nullable<int>);
					}
					this.SendPropertyChanged("Nop280_StateProvince");
				}
			}
		}
		
		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_CustomerAddresses(Nop280_CustomerAddress entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Address = this;
		}
		
		private void detach_CustomerAddresses(Nop280_CustomerAddress entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Address = null;
		}
		
		private void attach_Customers(Nop280_Customer entity)
		{
			this.SendPropertyChanging();
			entity.Address = this;
		}
		
		private void detach_Customers(Nop280_Customer entity)
		{
			this.SendPropertyChanging();
			entity.Address = null;
		}
		
		private void attach_Customers1(Nop280_Customer entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Address = this;
		}
		
		private void detach_Customers1(Nop280_Customer entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Address = null;
		}
		
		private void attach_Orders(Nop280_Order entity)
		{
			this.SendPropertyChanging();
			entity.Address = this;
		}
		
		private void detach_Orders(Nop280_Order entity)
		{
			this.SendPropertyChanging();
			entity.Address = null;
		}
		
		private void attach_Orders1(Nop280_Order entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Address = this;
		}
		
		private void detach_Orders1(Nop280_Order entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Address = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.UrlRecord")]
	public partial class Nop280_UrlRecord : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _EntityId;
		
		private string _EntityName;
		
		private string _Slug;
		
		private bool _IsActive;
		
		private int _LanguageId;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnEntityIdChanging(int value);
    partial void OnEntityIdChanged();
    partial void OnEntityNameChanging(string value);
    partial void OnEntityNameChanged();
    partial void OnSlugChanging(string value);
    partial void OnSlugChanged();
    partial void OnIsActiveChanging(bool value);
    partial void OnIsActiveChanged();
    partial void OnLanguageIdChanging(int value);
    partial void OnLanguageIdChanged();
    #endregion
		
		public Nop280_UrlRecord()
		{
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_EntityId", DbType="Int NOT NULL")]
		public int EntityId
		{
			get
			{
				return this._EntityId;
			}
			set
			{
				if ((this._EntityId != value))
				{
					this.OnEntityIdChanging(value);
					this.SendPropertyChanging();
					this._EntityId = value;
					this.SendPropertyChanged("EntityId");
					this.OnEntityIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_EntityName", DbType="NVarChar(400) NOT NULL", CanBeNull=false)]
		public string EntityName
		{
			get
			{
				return this._EntityName;
			}
			set
			{
				if ((this._EntityName != value))
				{
					this.OnEntityNameChanging(value);
					this.SendPropertyChanging();
					this._EntityName = value;
					this.SendPropertyChanged("EntityName");
					this.OnEntityNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Slug", DbType="NVarChar(400) NOT NULL", CanBeNull=false)]
		public string Slug
		{
			get
			{
				return this._Slug;
			}
			set
			{
				if ((this._Slug != value))
				{
					this.OnSlugChanging(value);
					this.SendPropertyChanging();
					this._Slug = value;
					this.SendPropertyChanged("Slug");
					this.OnSlugChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsActive", DbType="Bit NOT NULL")]
		public bool IsActive
		{
			get
			{
				return this._IsActive;
			}
			set
			{
				if ((this._IsActive != value))
				{
					this.OnIsActiveChanging(value);
					this.SendPropertyChanging();
					this._IsActive = value;
					this.SendPropertyChanged("IsActive");
					this.OnIsActiveChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LanguageId", DbType="Int NOT NULL")]
		public int LanguageId
		{
			get
			{
				return this._LanguageId;
			}
			set
			{
				if ((this._LanguageId != value))
				{
					this.OnLanguageIdChanging(value);
					this.SendPropertyChanging();
					this._LanguageId = value;
					this.SendPropertyChanged("LanguageId");
					this.OnLanguageIdChanged();
				}
			}
		}
		
		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.Setting")]
	public partial class Nop280_Setting : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private string _Name;
		
		private string _Value;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnNameChanging(string value);
    partial void OnNameChanged();
    partial void OnValueChanging(string value);
    partial void OnValueChanged();
    #endregion
		
		public Nop280_Setting()
		{
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="NVarChar(200) NOT NULL", CanBeNull=false)]
		public string Name
		{
			get
			{
				return this._Name;
			}
			set
			{
				if ((this._Name != value))
				{
					this.OnNameChanging(value);
					this.SendPropertyChanging();
					this._Name = value;
					this.SendPropertyChanged("Name");
					this.OnNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Value", DbType="NVarChar(2000) NOT NULL", CanBeNull=false)]
		public string Value
		{
			get
			{
				return this._Value;
			}
			set
			{
				if ((this._Value != value))
				{
					this.OnValueChanging(value);
					this.SendPropertyChanging();
					this._Value = value;
					this.SendPropertyChanged("Value");
					this.OnValueChanged();
				}
			}
		}
		
		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]")]
	public partial class Nop280_Order : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private System.Guid _OrderGuid;
		
		private int _CustomerId;
		
		private int _BillingAddressId;
		
		private System.Nullable<int> _ShippingAddressId;
		
		private int _OrderStatusId;
		
		private int _ShippingStatusId;
		
		private int _PaymentStatusId;
		
		private string _PaymentMethodSystemName;
		
		private string _CustomerCurrencyCode;
		
		private decimal _CurrencyRate;
		
		private int _CustomerTaxDisplayTypeId;
		
		private string _VatNumber;
		
		private decimal _OrderSubtotalInclTax;
		
		private decimal _OrderSubtotalExclTax;
		
		private decimal _OrderSubTotalDiscountInclTax;
		
		private decimal _OrderSubTotalDiscountExclTax;
		
		private decimal _OrderShippingInclTax;
		
		private decimal _OrderShippingExclTax;
		
		private decimal _PaymentMethodAdditionalFeeInclTax;
		
		private decimal _PaymentMethodAdditionalFeeExclTax;
		
		private string _TaxRates;
		
		private decimal _OrderTax;
		
		private decimal _OrderDiscount;
		
		private decimal _OrderTotal;
		
		private decimal _RefundedAmount;
		
		private bool _RewardPointsWereAdded;
		
		private string _CheckoutAttributeDescription;
		
		private string _CheckoutAttributesXml;
		
		private int _CustomerLanguageId;
		
		private System.Nullable<int> _AffiliateId;
		
		private string _CustomerIp;
		
		private bool _AllowStoringCreditCardNumber;
		
		private string _CardType;
		
		private string _CardName;
		
		private string _CardNumber;
		
		private string _MaskedCreditCardNumber;
		
		private string _CardCvv2;
		
		private string _CardExpirationMonth;
		
		private string _CardExpirationYear;
		
		private string _AuthorizationTransactionId;
		
		private string _AuthorizationTransactionCode;
		
		private string _AuthorizationTransactionResult;
		
		private string _CaptureTransactionId;
		
		private string _CaptureTransactionResult;
		
		private string _SubscriptionTransactionId;
		
		private string _PurchaseOrderNumber;
		
		private System.Nullable<System.DateTime> _PaidDateUtc;
		
		private string _ShippingMethod;
		
		private string _ShippingRateComputationMethodSystemName;
		
		private bool _Deleted;
		
		private System.DateTime _CreatedOnUtc;
		
		private EntitySet<Nop280_OrderProductVariant> _OrderProductVariants;
		
		private EntitySet<Nop280_OrderNote> _OrderNotes;
		
		private EntityRef<Nop280_Address> _Address;
		
		private EntityRef<Nop280_Customer> _Customer;
		
		private EntityRef<Nop280_Address> _Address1;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnOrderGuidChanging(System.Guid value);
    partial void OnOrderGuidChanged();
    partial void OnCustomerIdChanging(int value);
    partial void OnCustomerIdChanged();
    partial void OnBillingAddressIdChanging(int value);
    partial void OnBillingAddressIdChanged();
    partial void OnShippingAddressIdChanging(System.Nullable<int> value);
    partial void OnShippingAddressIdChanged();
    partial void OnOrderStatusIdChanging(int value);
    partial void OnOrderStatusIdChanged();
    partial void OnShippingStatusIdChanging(int value);
    partial void OnShippingStatusIdChanged();
    partial void OnPaymentStatusIdChanging(int value);
    partial void OnPaymentStatusIdChanged();
    partial void OnPaymentMethodSystemNameChanging(string value);
    partial void OnPaymentMethodSystemNameChanged();
    partial void OnCustomerCurrencyCodeChanging(string value);
    partial void OnCustomerCurrencyCodeChanged();
    partial void OnCurrencyRateChanging(decimal value);
    partial void OnCurrencyRateChanged();
    partial void OnCustomerTaxDisplayTypeIdChanging(int value);
    partial void OnCustomerTaxDisplayTypeIdChanged();
    partial void OnVatNumberChanging(string value);
    partial void OnVatNumberChanged();
    partial void OnOrderSubtotalInclTaxChanging(decimal value);
    partial void OnOrderSubtotalInclTaxChanged();
    partial void OnOrderSubtotalExclTaxChanging(decimal value);
    partial void OnOrderSubtotalExclTaxChanged();
    partial void OnOrderSubTotalDiscountInclTaxChanging(decimal value);
    partial void OnOrderSubTotalDiscountInclTaxChanged();
    partial void OnOrderSubTotalDiscountExclTaxChanging(decimal value);
    partial void OnOrderSubTotalDiscountExclTaxChanged();
    partial void OnOrderShippingInclTaxChanging(decimal value);
    partial void OnOrderShippingInclTaxChanged();
    partial void OnOrderShippingExclTaxChanging(decimal value);
    partial void OnOrderShippingExclTaxChanged();
    partial void OnPaymentMethodAdditionalFeeInclTaxChanging(decimal value);
    partial void OnPaymentMethodAdditionalFeeInclTaxChanged();
    partial void OnPaymentMethodAdditionalFeeExclTaxChanging(decimal value);
    partial void OnPaymentMethodAdditionalFeeExclTaxChanged();
    partial void OnTaxRatesChanging(string value);
    partial void OnTaxRatesChanged();
    partial void OnOrderTaxChanging(decimal value);
    partial void OnOrderTaxChanged();
    partial void OnOrderDiscountChanging(decimal value);
    partial void OnOrderDiscountChanged();
    partial void OnOrderTotalChanging(decimal value);
    partial void OnOrderTotalChanged();
    partial void OnRefundedAmountChanging(decimal value);
    partial void OnRefundedAmountChanged();
    partial void OnRewardPointsWereAddedChanging(bool value);
    partial void OnRewardPointsWereAddedChanged();
    partial void OnCheckoutAttributeDescriptionChanging(string value);
    partial void OnCheckoutAttributeDescriptionChanged();
    partial void OnCheckoutAttributesXmlChanging(string value);
    partial void OnCheckoutAttributesXmlChanged();
    partial void OnCustomerLanguageIdChanging(int value);
    partial void OnCustomerLanguageIdChanged();
    partial void OnAffiliateIdChanging(System.Nullable<int> value);
    partial void OnAffiliateIdChanged();
    partial void OnCustomerIpChanging(string value);
    partial void OnCustomerIpChanged();
    partial void OnAllowStoringCreditCardNumberChanging(bool value);
    partial void OnAllowStoringCreditCardNumberChanged();
    partial void OnCardTypeChanging(string value);
    partial void OnCardTypeChanged();
    partial void OnCardNameChanging(string value);
    partial void OnCardNameChanged();
    partial void OnCardNumberChanging(string value);
    partial void OnCardNumberChanged();
    partial void OnMaskedCreditCardNumberChanging(string value);
    partial void OnMaskedCreditCardNumberChanged();
    partial void OnCardCvv2Changing(string value);
    partial void OnCardCvv2Changed();
    partial void OnCardExpirationMonthChanging(string value);
    partial void OnCardExpirationMonthChanged();
    partial void OnCardExpirationYearChanging(string value);
    partial void OnCardExpirationYearChanged();
    partial void OnAuthorizationTransactionIdChanging(string value);
    partial void OnAuthorizationTransactionIdChanged();
    partial void OnAuthorizationTransactionCodeChanging(string value);
    partial void OnAuthorizationTransactionCodeChanged();
    partial void OnAuthorizationTransactionResultChanging(string value);
    partial void OnAuthorizationTransactionResultChanged();
    partial void OnCaptureTransactionIdChanging(string value);
    partial void OnCaptureTransactionIdChanged();
    partial void OnCaptureTransactionResultChanging(string value);
    partial void OnCaptureTransactionResultChanged();
    partial void OnSubscriptionTransactionIdChanging(string value);
    partial void OnSubscriptionTransactionIdChanged();
    partial void OnPurchaseOrderNumberChanging(string value);
    partial void OnPurchaseOrderNumberChanged();
    partial void OnPaidDateUtcChanging(System.Nullable<System.DateTime> value);
    partial void OnPaidDateUtcChanged();
    partial void OnShippingMethodChanging(string value);
    partial void OnShippingMethodChanged();
    partial void OnShippingRateComputationMethodSystemNameChanging(string value);
    partial void OnShippingRateComputationMethodSystemNameChanged();
    partial void OnDeletedChanging(bool value);
    partial void OnDeletedChanged();
    partial void OnCreatedOnUtcChanging(System.DateTime value);
    partial void OnCreatedOnUtcChanged();
    #endregion
		
		public Nop280_Order()
		{
			this._OrderProductVariants = new EntitySet<Nop280_OrderProductVariant>(new Action<Nop280_OrderProductVariant>(this.attach_OrderProductVariants), new Action<Nop280_OrderProductVariant>(this.detach_OrderProductVariants));
			this._OrderNotes = new EntitySet<Nop280_OrderNote>(new Action<Nop280_OrderNote>(this.attach_OrderNotes), new Action<Nop280_OrderNote>(this.detach_OrderNotes));
			this._Address = default(EntityRef<Nop280_Address>);
			this._Customer = default(EntityRef<Nop280_Customer>);
			this._Address1 = default(EntityRef<Nop280_Address>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderGuid", DbType="UniqueIdentifier NOT NULL")]
		public System.Guid OrderGuid
		{
			get
			{
				return this._OrderGuid;
			}
			set
			{
				if ((this._OrderGuid != value))
				{
					this.OnOrderGuidChanging(value);
					this.SendPropertyChanging();
					this._OrderGuid = value;
					this.SendPropertyChanged("OrderGuid");
					this.OnOrderGuidChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerId", DbType="Int NOT NULL")]
		public int 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="_BillingAddressId", DbType="Int NOT NULL")]
		public int BillingAddressId
		{
			get
			{
				return this._BillingAddressId;
			}
			set
			{
				if ((this._BillingAddressId != value))
				{
					if (this._Address.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnBillingAddressIdChanging(value);
					this.SendPropertyChanging();
					this._BillingAddressId = value;
					this.SendPropertyChanged("BillingAddressId");
					this.OnBillingAddressIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShippingAddressId", DbType="Int")]
		public System.Nullable<int> ShippingAddressId
		{
			get
			{
				return this._ShippingAddressId;
			}
			set
			{
				if ((this._ShippingAddressId != value))
				{
					if (this._Address1.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnShippingAddressIdChanging(value);
					this.SendPropertyChanging();
					this._ShippingAddressId = value;
					this.SendPropertyChanged("ShippingAddressId");
					this.OnShippingAddressIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderStatusId", DbType="Int NOT NULL")]
		public int OrderStatusId
		{
			get
			{
				return this._OrderStatusId;
			}
			set
			{
				if ((this._OrderStatusId != value))
				{
					this.OnOrderStatusIdChanging(value);
					this.SendPropertyChanging();
					this._OrderStatusId = value;
					this.SendPropertyChanged("OrderStatusId");
					this.OnOrderStatusIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShippingStatusId", DbType="Int NOT NULL")]
		public int ShippingStatusId
		{
			get
			{
				return this._ShippingStatusId;
			}
			set
			{
				if ((this._ShippingStatusId != value))
				{
					this.OnShippingStatusIdChanging(value);
					this.SendPropertyChanging();
					this._ShippingStatusId = value;
					this.SendPropertyChanged("ShippingStatusId");
					this.OnShippingStatusIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PaymentStatusId", DbType="Int NOT NULL")]
		public int PaymentStatusId
		{
			get
			{
				return this._PaymentStatusId;
			}
			set
			{
				if ((this._PaymentStatusId != value))
				{
					this.OnPaymentStatusIdChanging(value);
					this.SendPropertyChanging();
					this._PaymentStatusId = value;
					this.SendPropertyChanged("PaymentStatusId");
					this.OnPaymentStatusIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PaymentMethodSystemName", DbType="NVarChar(MAX)")]
		public string PaymentMethodSystemName
		{
			get
			{
				return this._PaymentMethodSystemName;
			}
			set
			{
				if ((this._PaymentMethodSystemName != value))
				{
					this.OnPaymentMethodSystemNameChanging(value);
					this.SendPropertyChanging();
					this._PaymentMethodSystemName = value;
					this.SendPropertyChanged("PaymentMethodSystemName");
					this.OnPaymentMethodSystemNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerCurrencyCode", DbType="NVarChar(MAX)")]
		public string CustomerCurrencyCode
		{
			get
			{
				return this._CustomerCurrencyCode;
			}
			set
			{
				if ((this._CustomerCurrencyCode != value))
				{
					this.OnCustomerCurrencyCodeChanging(value);
					this.SendPropertyChanging();
					this._CustomerCurrencyCode = value;
					this.SendPropertyChanged("CustomerCurrencyCode");
					this.OnCustomerCurrencyCodeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CurrencyRate", DbType="Decimal(18,8) NOT NULL")]
		public decimal CurrencyRate
		{
			get
			{
				return this._CurrencyRate;
			}
			set
			{
				if ((this._CurrencyRate != value))
				{
					this.OnCurrencyRateChanging(value);
					this.SendPropertyChanging();
					this._CurrencyRate = value;
					this.SendPropertyChanged("CurrencyRate");
					this.OnCurrencyRateChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerTaxDisplayTypeId", DbType="Int NOT NULL")]
		public int CustomerTaxDisplayTypeId
		{
			get
			{
				return this._CustomerTaxDisplayTypeId;
			}
			set
			{
				if ((this._CustomerTaxDisplayTypeId != value))
				{
					this.OnCustomerTaxDisplayTypeIdChanging(value);
					this.SendPropertyChanging();
					this._CustomerTaxDisplayTypeId = value;
					this.SendPropertyChanged("CustomerTaxDisplayTypeId");
					this.OnCustomerTaxDisplayTypeIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_VatNumber", DbType="NVarChar(MAX)")]
		public string VatNumber
		{
			get
			{
				return this._VatNumber;
			}
			set
			{
				if ((this._VatNumber != value))
				{
					this.OnVatNumberChanging(value);
					this.SendPropertyChanging();
					this._VatNumber = value;
					this.SendPropertyChanged("VatNumber");
					this.OnVatNumberChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderSubtotalInclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal OrderSubtotalInclTax
		{
			get
			{
				return this._OrderSubtotalInclTax;
			}
			set
			{
				if ((this._OrderSubtotalInclTax != value))
				{
					this.OnOrderSubtotalInclTaxChanging(value);
					this.SendPropertyChanging();
					this._OrderSubtotalInclTax = value;
					this.SendPropertyChanged("OrderSubtotalInclTax");
					this.OnOrderSubtotalInclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderSubtotalExclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal OrderSubtotalExclTax
		{
			get
			{
				return this._OrderSubtotalExclTax;
			}
			set
			{
				if ((this._OrderSubtotalExclTax != value))
				{
					this.OnOrderSubtotalExclTaxChanging(value);
					this.SendPropertyChanging();
					this._OrderSubtotalExclTax = value;
					this.SendPropertyChanged("OrderSubtotalExclTax");
					this.OnOrderSubtotalExclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderSubTotalDiscountInclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal OrderSubTotalDiscountInclTax
		{
			get
			{
				return this._OrderSubTotalDiscountInclTax;
			}
			set
			{
				if ((this._OrderSubTotalDiscountInclTax != value))
				{
					this.OnOrderSubTotalDiscountInclTaxChanging(value);
					this.SendPropertyChanging();
					this._OrderSubTotalDiscountInclTax = value;
					this.SendPropertyChanged("OrderSubTotalDiscountInclTax");
					this.OnOrderSubTotalDiscountInclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderSubTotalDiscountExclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal OrderSubTotalDiscountExclTax
		{
			get
			{
				return this._OrderSubTotalDiscountExclTax;
			}
			set
			{
				if ((this._OrderSubTotalDiscountExclTax != value))
				{
					this.OnOrderSubTotalDiscountExclTaxChanging(value);
					this.SendPropertyChanging();
					this._OrderSubTotalDiscountExclTax = value;
					this.SendPropertyChanged("OrderSubTotalDiscountExclTax");
					this.OnOrderSubTotalDiscountExclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderShippingInclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal OrderShippingInclTax
		{
			get
			{
				return this._OrderShippingInclTax;
			}
			set
			{
				if ((this._OrderShippingInclTax != value))
				{
					this.OnOrderShippingInclTaxChanging(value);
					this.SendPropertyChanging();
					this._OrderShippingInclTax = value;
					this.SendPropertyChanged("OrderShippingInclTax");
					this.OnOrderShippingInclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderShippingExclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal OrderShippingExclTax
		{
			get
			{
				return this._OrderShippingExclTax;
			}
			set
			{
				if ((this._OrderShippingExclTax != value))
				{
					this.OnOrderShippingExclTaxChanging(value);
					this.SendPropertyChanging();
					this._OrderShippingExclTax = value;
					this.SendPropertyChanged("OrderShippingExclTax");
					this.OnOrderShippingExclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PaymentMethodAdditionalFeeInclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal PaymentMethodAdditionalFeeInclTax
		{
			get
			{
				return this._PaymentMethodAdditionalFeeInclTax;
			}
			set
			{
				if ((this._PaymentMethodAdditionalFeeInclTax != value))
				{
					this.OnPaymentMethodAdditionalFeeInclTaxChanging(value);
					this.SendPropertyChanging();
					this._PaymentMethodAdditionalFeeInclTax = value;
					this.SendPropertyChanged("PaymentMethodAdditionalFeeInclTax");
					this.OnPaymentMethodAdditionalFeeInclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PaymentMethodAdditionalFeeExclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal PaymentMethodAdditionalFeeExclTax
		{
			get
			{
				return this._PaymentMethodAdditionalFeeExclTax;
			}
			set
			{
				if ((this._PaymentMethodAdditionalFeeExclTax != value))
				{
					this.OnPaymentMethodAdditionalFeeExclTaxChanging(value);
					this.SendPropertyChanging();
					this._PaymentMethodAdditionalFeeExclTax = value;
					this.SendPropertyChanged("PaymentMethodAdditionalFeeExclTax");
					this.OnPaymentMethodAdditionalFeeExclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TaxRates", DbType="NVarChar(MAX)")]
		public string TaxRates
		{
			get
			{
				return this._TaxRates;
			}
			set
			{
				if ((this._TaxRates != value))
				{
					this.OnTaxRatesChanging(value);
					this.SendPropertyChanging();
					this._TaxRates = value;
					this.SendPropertyChanged("TaxRates");
					this.OnTaxRatesChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal OrderTax
		{
			get
			{
				return this._OrderTax;
			}
			set
			{
				if ((this._OrderTax != value))
				{
					this.OnOrderTaxChanging(value);
					this.SendPropertyChanging();
					this._OrderTax = value;
					this.SendPropertyChanged("OrderTax");
					this.OnOrderTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderDiscount", DbType="Decimal(18,4) NOT NULL")]
		public decimal OrderDiscount
		{
			get
			{
				return this._OrderDiscount;
			}
			set
			{
				if ((this._OrderDiscount != value))
				{
					this.OnOrderDiscountChanging(value);
					this.SendPropertyChanging();
					this._OrderDiscount = value;
					this.SendPropertyChanged("OrderDiscount");
					this.OnOrderDiscountChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderTotal", DbType="Decimal(18,4) NOT NULL")]
		public decimal OrderTotal
		{
			get
			{
				return this._OrderTotal;
			}
			set
			{
				if ((this._OrderTotal != value))
				{
					this.OnOrderTotalChanging(value);
					this.SendPropertyChanging();
					this._OrderTotal = value;
					this.SendPropertyChanged("OrderTotal");
					this.OnOrderTotalChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RefundedAmount", DbType="Decimal(18,4) NOT NULL")]
		public decimal RefundedAmount
		{
			get
			{
				return this._RefundedAmount;
			}
			set
			{
				if ((this._RefundedAmount != value))
				{
					this.OnRefundedAmountChanging(value);
					this.SendPropertyChanging();
					this._RefundedAmount = value;
					this.SendPropertyChanged("RefundedAmount");
					this.OnRefundedAmountChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RewardPointsWereAdded", DbType="Bit NOT NULL")]
		public bool RewardPointsWereAdded
		{
			get
			{
				return this._RewardPointsWereAdded;
			}
			set
			{
				if ((this._RewardPointsWereAdded != value))
				{
					this.OnRewardPointsWereAddedChanging(value);
					this.SendPropertyChanging();
					this._RewardPointsWereAdded = value;
					this.SendPropertyChanged("RewardPointsWereAdded");
					this.OnRewardPointsWereAddedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CheckoutAttributeDescription", DbType="NVarChar(MAX)")]
		public string CheckoutAttributeDescription
		{
			get
			{
				return this._CheckoutAttributeDescription;
			}
			set
			{
				if ((this._CheckoutAttributeDescription != value))
				{
					this.OnCheckoutAttributeDescriptionChanging(value);
					this.SendPropertyChanging();
					this._CheckoutAttributeDescription = value;
					this.SendPropertyChanged("CheckoutAttributeDescription");
					this.OnCheckoutAttributeDescriptionChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CheckoutAttributesXml", DbType="NVarChar(MAX)")]
		public string CheckoutAttributesXml
		{
			get
			{
				return this._CheckoutAttributesXml;
			}
			set
			{
				if ((this._CheckoutAttributesXml != value))
				{
					this.OnCheckoutAttributesXmlChanging(value);
					this.SendPropertyChanging();
					this._CheckoutAttributesXml = value;
					this.SendPropertyChanged("CheckoutAttributesXml");
					this.OnCheckoutAttributesXmlChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerLanguageId", DbType="Int NOT NULL")]
		public int CustomerLanguageId
		{
			get
			{
				return this._CustomerLanguageId;
			}
			set
			{
				if ((this._CustomerLanguageId != value))
				{
					this.OnCustomerLanguageIdChanging(value);
					this.SendPropertyChanging();
					this._CustomerLanguageId = value;
					this.SendPropertyChanged("CustomerLanguageId");
					this.OnCustomerLanguageIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AffiliateId", DbType="Int")]
		public System.Nullable<int> AffiliateId
		{
			get
			{
				return this._AffiliateId;
			}
			set
			{
				if ((this._AffiliateId != value))
				{
					this.OnAffiliateIdChanging(value);
					this.SendPropertyChanging();
					this._AffiliateId = value;
					this.SendPropertyChanged("AffiliateId");
					this.OnAffiliateIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerIp", DbType="NVarChar(MAX)")]
		public string CustomerIp
		{
			get
			{
				return this._CustomerIp;
			}
			set
			{
				if ((this._CustomerIp != value))
				{
					this.OnCustomerIpChanging(value);
					this.SendPropertyChanging();
					this._CustomerIp = value;
					this.SendPropertyChanged("CustomerIp");
					this.OnCustomerIpChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AllowStoringCreditCardNumber", DbType="Bit NOT NULL")]
		public bool AllowStoringCreditCardNumber
		{
			get
			{
				return this._AllowStoringCreditCardNumber;
			}
			set
			{
				if ((this._AllowStoringCreditCardNumber != value))
				{
					this.OnAllowStoringCreditCardNumberChanging(value);
					this.SendPropertyChanging();
					this._AllowStoringCreditCardNumber = value;
					this.SendPropertyChanged("AllowStoringCreditCardNumber");
					this.OnAllowStoringCreditCardNumberChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CardType", DbType="NVarChar(MAX)")]
		public string CardType
		{
			get
			{
				return this._CardType;
			}
			set
			{
				if ((this._CardType != value))
				{
					this.OnCardTypeChanging(value);
					this.SendPropertyChanging();
					this._CardType = value;
					this.SendPropertyChanged("CardType");
					this.OnCardTypeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CardName", DbType="NVarChar(MAX)")]
		public string CardName
		{
			get
			{
				return this._CardName;
			}
			set
			{
				if ((this._CardName != value))
				{
					this.OnCardNameChanging(value);
					this.SendPropertyChanging();
					this._CardName = value;
					this.SendPropertyChanged("CardName");
					this.OnCardNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CardNumber", DbType="NVarChar(MAX)")]
		public string CardNumber
		{
			get
			{
				return this._CardNumber;
			}
			set
			{
				if ((this._CardNumber != value))
				{
					this.OnCardNumberChanging(value);
					this.SendPropertyChanging();
					this._CardNumber = value;
					this.SendPropertyChanged("CardNumber");
					this.OnCardNumberChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MaskedCreditCardNumber", DbType="NVarChar(MAX)")]
		public string MaskedCreditCardNumber
		{
			get
			{
				return this._MaskedCreditCardNumber;
			}
			set
			{
				if ((this._MaskedCreditCardNumber != value))
				{
					this.OnMaskedCreditCardNumberChanging(value);
					this.SendPropertyChanging();
					this._MaskedCreditCardNumber = value;
					this.SendPropertyChanged("MaskedCreditCardNumber");
					this.OnMaskedCreditCardNumberChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CardCvv2", DbType="NVarChar(MAX)")]
		public string CardCvv2
		{
			get
			{
				return this._CardCvv2;
			}
			set
			{
				if ((this._CardCvv2 != value))
				{
					this.OnCardCvv2Changing(value);
					this.SendPropertyChanging();
					this._CardCvv2 = value;
					this.SendPropertyChanged("CardCvv2");
					this.OnCardCvv2Changed();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CardExpirationMonth", DbType="NVarChar(MAX)")]
		public string CardExpirationMonth
		{
			get
			{
				return this._CardExpirationMonth;
			}
			set
			{
				if ((this._CardExpirationMonth != value))
				{
					this.OnCardExpirationMonthChanging(value);
					this.SendPropertyChanging();
					this._CardExpirationMonth = value;
					this.SendPropertyChanged("CardExpirationMonth");
					this.OnCardExpirationMonthChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CardExpirationYear", DbType="NVarChar(MAX)")]
		public string CardExpirationYear
		{
			get
			{
				return this._CardExpirationYear;
			}
			set
			{
				if ((this._CardExpirationYear != value))
				{
					this.OnCardExpirationYearChanging(value);
					this.SendPropertyChanging();
					this._CardExpirationYear = value;
					this.SendPropertyChanged("CardExpirationYear");
					this.OnCardExpirationYearChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AuthorizationTransactionId", DbType="NVarChar(MAX)")]
		public string AuthorizationTransactionId
		{
			get
			{
				return this._AuthorizationTransactionId;
			}
			set
			{
				if ((this._AuthorizationTransactionId != value))
				{
					this.OnAuthorizationTransactionIdChanging(value);
					this.SendPropertyChanging();
					this._AuthorizationTransactionId = value;
					this.SendPropertyChanged("AuthorizationTransactionId");
					this.OnAuthorizationTransactionIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AuthorizationTransactionCode", DbType="NVarChar(MAX)")]
		public string AuthorizationTransactionCode
		{
			get
			{
				return this._AuthorizationTransactionCode;
			}
			set
			{
				if ((this._AuthorizationTransactionCode != value))
				{
					this.OnAuthorizationTransactionCodeChanging(value);
					this.SendPropertyChanging();
					this._AuthorizationTransactionCode = value;
					this.SendPropertyChanged("AuthorizationTransactionCode");
					this.OnAuthorizationTransactionCodeChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AuthorizationTransactionResult", DbType="NVarChar(MAX)")]
		public string AuthorizationTransactionResult
		{
			get
			{
				return this._AuthorizationTransactionResult;
			}
			set
			{
				if ((this._AuthorizationTransactionResult != value))
				{
					this.OnAuthorizationTransactionResultChanging(value);
					this.SendPropertyChanging();
					this._AuthorizationTransactionResult = value;
					this.SendPropertyChanged("AuthorizationTransactionResult");
					this.OnAuthorizationTransactionResultChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CaptureTransactionId", DbType="NVarChar(MAX)")]
		public string CaptureTransactionId
		{
			get
			{
				return this._CaptureTransactionId;
			}
			set
			{
				if ((this._CaptureTransactionId != value))
				{
					this.OnCaptureTransactionIdChanging(value);
					this.SendPropertyChanging();
					this._CaptureTransactionId = value;
					this.SendPropertyChanged("CaptureTransactionId");
					this.OnCaptureTransactionIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CaptureTransactionResult", DbType="NVarChar(MAX)")]
		public string CaptureTransactionResult
		{
			get
			{
				return this._CaptureTransactionResult;
			}
			set
			{
				if ((this._CaptureTransactionResult != value))
				{
					this.OnCaptureTransactionResultChanging(value);
					this.SendPropertyChanging();
					this._CaptureTransactionResult = value;
					this.SendPropertyChanged("CaptureTransactionResult");
					this.OnCaptureTransactionResultChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SubscriptionTransactionId", DbType="NVarChar(MAX)")]
		public string SubscriptionTransactionId
		{
			get
			{
				return this._SubscriptionTransactionId;
			}
			set
			{
				if ((this._SubscriptionTransactionId != value))
				{
					this.OnSubscriptionTransactionIdChanging(value);
					this.SendPropertyChanging();
					this._SubscriptionTransactionId = value;
					this.SendPropertyChanged("SubscriptionTransactionId");
					this.OnSubscriptionTransactionIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PurchaseOrderNumber", DbType="NVarChar(MAX)")]
		public string PurchaseOrderNumber
		{
			get
			{
				return this._PurchaseOrderNumber;
			}
			set
			{
				if ((this._PurchaseOrderNumber != value))
				{
					this.OnPurchaseOrderNumberChanging(value);
					this.SendPropertyChanging();
					this._PurchaseOrderNumber = value;
					this.SendPropertyChanged("PurchaseOrderNumber");
					this.OnPurchaseOrderNumberChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PaidDateUtc", DbType="DateTime")]
		public System.Nullable<System.DateTime> PaidDateUtc
		{
			get
			{
				return this._PaidDateUtc;
			}
			set
			{
				if ((this._PaidDateUtc != value))
				{
					this.OnPaidDateUtcChanging(value);
					this.SendPropertyChanging();
					this._PaidDateUtc = value;
					this.SendPropertyChanged("PaidDateUtc");
					this.OnPaidDateUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShippingMethod", DbType="NVarChar(MAX)")]
		public string ShippingMethod
		{
			get
			{
				return this._ShippingMethod;
			}
			set
			{
				if ((this._ShippingMethod != value))
				{
					this.OnShippingMethodChanging(value);
					this.SendPropertyChanging();
					this._ShippingMethod = value;
					this.SendPropertyChanged("ShippingMethod");
					this.OnShippingMethodChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShippingRateComputationMethodSystemName", DbType="NVarChar(MAX)")]
		public string ShippingRateComputationMethodSystemName
		{
			get
			{
				return this._ShippingRateComputationMethodSystemName;
			}
			set
			{
				if ((this._ShippingRateComputationMethodSystemName != value))
				{
					this.OnShippingRateComputationMethodSystemNameChanging(value);
					this.SendPropertyChanging();
					this._ShippingRateComputationMethodSystemName = value;
					this.SendPropertyChanged("ShippingRateComputationMethodSystemName");
					this.OnShippingRateComputationMethodSystemNameChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Deleted", DbType="Bit NOT NULL")]
		public bool Deleted
		{
			get
			{
				return this._Deleted;
			}
			set
			{
				if ((this._Deleted != value))
				{
					this.OnDeletedChanging(value);
					this.SendPropertyChanging();
					this._Deleted = value;
					this.SendPropertyChanged("Deleted");
					this.OnDeletedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CreatedOnUtc", DbType="DateTime NOT NULL")]
		public System.DateTime CreatedOnUtc
		{
			get
			{
				return this._CreatedOnUtc;
			}
			set
			{
				if ((this._CreatedOnUtc != value))
				{
					this.OnCreatedOnUtcChanging(value);
					this.SendPropertyChanging();
					this._CreatedOnUtc = value;
					this.SendPropertyChanged("CreatedOnUtc");
					this.OnCreatedOnUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Order_Nop280_OrderProductVariant", Storage="_OrderProductVariants", ThisKey="Id", OtherKey="OrderId")]
		public EntitySet<Nop280_OrderProductVariant> Nop280_OrderProductVariants
		{
			get
			{
				return this._OrderProductVariants;
			}
			set
			{
				this._OrderProductVariants.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Order_Nop280_OrderNote", Storage="_OrderNotes", ThisKey="Id", OtherKey="OrderId")]
		public EntitySet<Nop280_OrderNote> Nop280_OrderNotes
		{
			get
			{
				return this._OrderNotes;
			}
			set
			{
				this._OrderNotes.Assign(value);
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Address_Nop280_Order", Storage="_Address", ThisKey="BillingAddressId", OtherKey="Id", IsForeignKey=true)]
		public Nop280_Address Address
		{
			get
			{
				return this._Address.Entity;
			}
			set
			{
				Nop280_Address previousValue = this._Address.Entity;
				if (((previousValue != value) 
							|| (this._Address.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Address.Entity = null;
						previousValue.Orders.Remove(this);
					}
					this._Address.Entity = value;
					if ((value != null))
					{
						value.Orders.Add(this);
						this._BillingAddressId = value.Id;
					}
					else
					{
						this._BillingAddressId = default(int);
					}
					this.SendPropertyChanged("Address");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Customer_Nop280_Order", Storage="_Customer", ThisKey="CustomerId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Customer Nop280_Customer
		{
			get
			{
				return this._Customer.Entity;
			}
			set
			{
				Nop280_Customer previousValue = this._Customer.Entity;
				if (((previousValue != value) 
							|| (this._Customer.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Customer.Entity = null;
						previousValue.Nop280_Orders.Remove(this);
					}
					this._Customer.Entity = value;
					if ((value != null))
					{
						value.Nop280_Orders.Add(this);
						this._CustomerId = value.Id;
					}
					else
					{
						this._CustomerId = default(int);
					}
					this.SendPropertyChanged("Nop280_Customer");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Address_Nop280_Order1", Storage="_Address1", ThisKey="ShippingAddressId", OtherKey="Id", IsForeignKey=true)]
		public Nop280_Address Nop280_Address
		{
			get
			{
				return this._Address1.Entity;
			}
			set
			{
				Nop280_Address previousValue = this._Address1.Entity;
				if (((previousValue != value) 
							|| (this._Address1.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Address1.Entity = null;
						previousValue.Nop280_Orders.Remove(this);
					}
					this._Address1.Entity = value;
					if ((value != null))
					{
						value.Nop280_Orders.Add(this);
						this._ShippingAddressId = value.Id;
					}
					else
					{
						this._ShippingAddressId = default(Nullable<int>);
					}
					this.SendPropertyChanged("Nop280_Address");
				}
			}
		}
		
		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_OrderProductVariants(Nop280_OrderProductVariant entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Order = this;
		}
		
		private void detach_OrderProductVariants(Nop280_OrderProductVariant entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Order = null;
		}
		
		private void attach_OrderNotes(Nop280_OrderNote entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Order = this;
		}
		
		private void detach_OrderNotes(Nop280_OrderNote entity)
		{
			this.SendPropertyChanging();
			entity.Nop280_Order = null;
		}
	}
	
	[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.OrderProductVariant")]
	public partial class Nop280_OrderProductVariant : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private System.Guid _OrderProductVariantGuid;
		
		private int _OrderId;
		
		private int _ProductVariantId;
		
		private int _Quantity;
		
		private decimal _UnitPriceInclTax;
		
		private decimal _UnitPriceExclTax;
		
		private decimal _PriceInclTax;
		
		private decimal _PriceExclTax;
		
		private decimal _DiscountAmountInclTax;
		
		private decimal _DiscountAmountExclTax;
		
		private string _AttributeDescription;
		
		private string _AttributesXml;
		
		private int _DownloadCount;
		
		private bool _IsDownloadActivated;
		
		private System.Nullable<int> _LicenseDownloadId;
		
		private System.Nullable<decimal> _ItemWeight;
		
		private EntityRef<Nop280_Order> _Order;
		
		private EntityRef<Nop280_ProductVariant> _ProductVariant;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnOrderProductVariantGuidChanging(System.Guid value);
    partial void OnOrderProductVariantGuidChanged();
    partial void OnOrderIdChanging(int value);
    partial void OnOrderIdChanged();
    partial void OnProductVariantIdChanging(int value);
    partial void OnProductVariantIdChanged();
    partial void OnQuantityChanging(int value);
    partial void OnQuantityChanged();
    partial void OnUnitPriceInclTaxChanging(decimal value);
    partial void OnUnitPriceInclTaxChanged();
    partial void OnUnitPriceExclTaxChanging(decimal value);
    partial void OnUnitPriceExclTaxChanged();
    partial void OnPriceInclTaxChanging(decimal value);
    partial void OnPriceInclTaxChanged();
    partial void OnPriceExclTaxChanging(decimal value);
    partial void OnPriceExclTaxChanged();
    partial void OnDiscountAmountInclTaxChanging(decimal value);
    partial void OnDiscountAmountInclTaxChanged();
    partial void OnDiscountAmountExclTaxChanging(decimal value);
    partial void OnDiscountAmountExclTaxChanged();
    partial void OnAttributeDescriptionChanging(string value);
    partial void OnAttributeDescriptionChanged();
    partial void OnAttributesXmlChanging(string value);
    partial void OnAttributesXmlChanged();
    partial void OnDownloadCountChanging(int value);
    partial void OnDownloadCountChanged();
    partial void OnIsDownloadActivatedChanging(bool value);
    partial void OnIsDownloadActivatedChanged();
    partial void OnLicenseDownloadIdChanging(System.Nullable<int> value);
    partial void OnLicenseDownloadIdChanged();
    partial void OnItemWeightChanging(System.Nullable<decimal> value);
    partial void OnItemWeightChanged();
    #endregion
		
		public Nop280_OrderProductVariant()
		{
			this._Order = default(EntityRef<Nop280_Order>);
			this._ProductVariant = default(EntityRef<Nop280_ProductVariant>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderProductVariantGuid", DbType="UniqueIdentifier NOT NULL")]
		public System.Guid OrderProductVariantGuid
		{
			get
			{
				return this._OrderProductVariantGuid;
			}
			set
			{
				if ((this._OrderProductVariantGuid != value))
				{
					this.OnOrderProductVariantGuidChanging(value);
					this.SendPropertyChanging();
					this._OrderProductVariantGuid = value;
					this.SendPropertyChanged("OrderProductVariantGuid");
					this.OnOrderProductVariantGuidChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderId", DbType="Int NOT NULL")]
		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="_ProductVariantId", DbType="Int NOT NULL")]
		public int ProductVariantId
		{
			get
			{
				return this._ProductVariantId;
			}
			set
			{
				if ((this._ProductVariantId != value))
				{
					if (this._ProductVariant.HasLoadedOrAssignedValue)
					{
						throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
					}
					this.OnProductVariantIdChanging(value);
					this.SendPropertyChanging();
					this._ProductVariantId = value;
					this.SendPropertyChanged("ProductVariantId");
					this.OnProductVariantIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Quantity", DbType="Int NOT NULL")]
		public int 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="_UnitPriceInclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal UnitPriceInclTax
		{
			get
			{
				return this._UnitPriceInclTax;
			}
			set
			{
				if ((this._UnitPriceInclTax != value))
				{
					this.OnUnitPriceInclTaxChanging(value);
					this.SendPropertyChanging();
					this._UnitPriceInclTax = value;
					this.SendPropertyChanged("UnitPriceInclTax");
					this.OnUnitPriceInclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitPriceExclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal UnitPriceExclTax
		{
			get
			{
				return this._UnitPriceExclTax;
			}
			set
			{
				if ((this._UnitPriceExclTax != value))
				{
					this.OnUnitPriceExclTaxChanging(value);
					this.SendPropertyChanging();
					this._UnitPriceExclTax = value;
					this.SendPropertyChanged("UnitPriceExclTax");
					this.OnUnitPriceExclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PriceInclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal PriceInclTax
		{
			get
			{
				return this._PriceInclTax;
			}
			set
			{
				if ((this._PriceInclTax != value))
				{
					this.OnPriceInclTaxChanging(value);
					this.SendPropertyChanging();
					this._PriceInclTax = value;
					this.SendPropertyChanged("PriceInclTax");
					this.OnPriceInclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PriceExclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal PriceExclTax
		{
			get
			{
				return this._PriceExclTax;
			}
			set
			{
				if ((this._PriceExclTax != value))
				{
					this.OnPriceExclTaxChanging(value);
					this.SendPropertyChanging();
					this._PriceExclTax = value;
					this.SendPropertyChanged("PriceExclTax");
					this.OnPriceExclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DiscountAmountInclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal DiscountAmountInclTax
		{
			get
			{
				return this._DiscountAmountInclTax;
			}
			set
			{
				if ((this._DiscountAmountInclTax != value))
				{
					this.OnDiscountAmountInclTaxChanging(value);
					this.SendPropertyChanging();
					this._DiscountAmountInclTax = value;
					this.SendPropertyChanged("DiscountAmountInclTax");
					this.OnDiscountAmountInclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DiscountAmountExclTax", DbType="Decimal(18,4) NOT NULL")]
		public decimal DiscountAmountExclTax
		{
			get
			{
				return this._DiscountAmountExclTax;
			}
			set
			{
				if ((this._DiscountAmountExclTax != value))
				{
					this.OnDiscountAmountExclTaxChanging(value);
					this.SendPropertyChanging();
					this._DiscountAmountExclTax = value;
					this.SendPropertyChanged("DiscountAmountExclTax");
					this.OnDiscountAmountExclTaxChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AttributeDescription", DbType="NVarChar(MAX)")]
		public string AttributeDescription
		{
			get
			{
				return this._AttributeDescription;
			}
			set
			{
				if ((this._AttributeDescription != value))
				{
					this.OnAttributeDescriptionChanging(value);
					this.SendPropertyChanging();
					this._AttributeDescription = value;
					this.SendPropertyChanged("AttributeDescription");
					this.OnAttributeDescriptionChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AttributesXml", DbType="NVarChar(MAX)")]
		public string AttributesXml
		{
			get
			{
				return this._AttributesXml;
			}
			set
			{
				if ((this._AttributesXml != value))
				{
					this.OnAttributesXmlChanging(value);
					this.SendPropertyChanging();
					this._AttributesXml = value;
					this.SendPropertyChanged("AttributesXml");
					this.OnAttributesXmlChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DownloadCount", DbType="Int NOT NULL")]
		public int DownloadCount
		{
			get
			{
				return this._DownloadCount;
			}
			set
			{
				if ((this._DownloadCount != value))
				{
					this.OnDownloadCountChanging(value);
					this.SendPropertyChanging();
					this._DownloadCount = value;
					this.SendPropertyChanged("DownloadCount");
					this.OnDownloadCountChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsDownloadActivated", DbType="Bit NOT NULL")]
		public bool IsDownloadActivated
		{
			get
			{
				return this._IsDownloadActivated;
			}
			set
			{
				if ((this._IsDownloadActivated != value))
				{
					this.OnIsDownloadActivatedChanging(value);
					this.SendPropertyChanging();
					this._IsDownloadActivated = value;
					this.SendPropertyChanged("IsDownloadActivated");
					this.OnIsDownloadActivatedChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LicenseDownloadId", DbType="Int")]
		public System.Nullable<int> LicenseDownloadId
		{
			get
			{
				return this._LicenseDownloadId;
			}
			set
			{
				if ((this._LicenseDownloadId != value))
				{
					this.OnLicenseDownloadIdChanging(value);
					this.SendPropertyChanging();
					this._LicenseDownloadId = value;
					this.SendPropertyChanged("LicenseDownloadId");
					this.OnLicenseDownloadIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ItemWeight", DbType="Decimal(18,4)")]
		public System.Nullable<decimal> ItemWeight
		{
			get
			{
				return this._ItemWeight;
			}
			set
			{
				if ((this._ItemWeight != value))
				{
					this.OnItemWeightChanging(value);
					this.SendPropertyChanging();
					this._ItemWeight = value;
					this.SendPropertyChanged("ItemWeight");
					this.OnItemWeightChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Order_Nop280_OrderProductVariant", Storage="_Order", ThisKey="OrderId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Order Nop280_Order
		{
			get
			{
				return this._Order.Entity;
			}
			set
			{
				Nop280_Order previousValue = this._Order.Entity;
				if (((previousValue != value) 
							|| (this._Order.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Order.Entity = null;
						previousValue.Nop280_OrderProductVariants.Remove(this);
					}
					this._Order.Entity = value;
					if ((value != null))
					{
						value.Nop280_OrderProductVariants.Add(this);
						this._OrderId = value.Id;
					}
					else
					{
						this._OrderId = default(int);
					}
					this.SendPropertyChanged("Nop280_Order");
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="ProductVariant_Nop280_OrderProductVariant", Storage="_ProductVariant", ThisKey="ProductVariantId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_ProductVariant Nop280_ProductVariant
		{
			get
			{
				return this._ProductVariant.Entity;
			}
			set
			{
				Nop280_ProductVariant previousValue = this._ProductVariant.Entity;
				if (((previousValue != value) 
							|| (this._ProductVariant.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._ProductVariant.Entity = null;
						previousValue.Nop280_OrderProductVariants.Remove(this);
					}
					this._ProductVariant.Entity = value;
					if ((value != null))
					{
						value.Nop280_OrderProductVariants.Add(this);
						this._ProductVariantId = value.Id;
					}
					else
					{
						this._ProductVariantId = default(int);
					}
					this.SendPropertyChanged("Nop280_ProductVariant");
				}
			}
		}
		
		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.OrderNote")]
	public partial class Nop280_OrderNote : INotifyPropertyChanging, INotifyPropertyChanged
	{
		
		private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
		
		private int _Id;
		
		private int _OrderId;
		
		private string _Note;
		
		private bool _DisplayToCustomer;
		
		private System.DateTime _CreatedOnUtc;
		
		private EntityRef<Nop280_Order> _Order;
		
    #region Extensibility Method Definitions
    partial void OnLoaded();
    partial void OnValidate(System.Data.Linq.ChangeAction action);
    partial void OnCreated();
    partial void OnIdChanging(int value);
    partial void OnIdChanged();
    partial void OnOrderIdChanging(int value);
    partial void OnOrderIdChanged();
    partial void OnNoteChanging(string value);
    partial void OnNoteChanged();
    partial void OnDisplayToCustomerChanging(bool value);
    partial void OnDisplayToCustomerChanged();
    partial void OnCreatedOnUtcChanging(System.DateTime value);
    partial void OnCreatedOnUtcChanged();
    #endregion
		
		public Nop280_OrderNote()
		{
			this._Order = default(EntityRef<Nop280_Order>);
			OnCreated();
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
		public int Id
		{
			get
			{
				return this._Id;
			}
			set
			{
				if ((this._Id != value))
				{
					this.OnIdChanging(value);
					this.SendPropertyChanging();
					this._Id = value;
					this.SendPropertyChanged("Id");
					this.OnIdChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderId", DbType="Int NOT NULL")]
		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="_Note", DbType="NVarChar(MAX) NOT NULL", CanBeNull=false)]
		public string Note
		{
			get
			{
				return this._Note;
			}
			set
			{
				if ((this._Note != value))
				{
					this.OnNoteChanging(value);
					this.SendPropertyChanging();
					this._Note = value;
					this.SendPropertyChanged("Note");
					this.OnNoteChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DisplayToCustomer", DbType="Bit NOT NULL")]
		public bool DisplayToCustomer
		{
			get
			{
				return this._DisplayToCustomer;
			}
			set
			{
				if ((this._DisplayToCustomer != value))
				{
					this.OnDisplayToCustomerChanging(value);
					this.SendPropertyChanging();
					this._DisplayToCustomer = value;
					this.SendPropertyChanged("DisplayToCustomer");
					this.OnDisplayToCustomerChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CreatedOnUtc", DbType="DateTime NOT NULL")]
		public System.DateTime CreatedOnUtc
		{
			get
			{
				return this._CreatedOnUtc;
			}
			set
			{
				if ((this._CreatedOnUtc != value))
				{
					this.OnCreatedOnUtcChanging(value);
					this.SendPropertyChanging();
					this._CreatedOnUtc = value;
					this.SendPropertyChanged("CreatedOnUtc");
					this.OnCreatedOnUtcChanged();
				}
			}
		}
		
		[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Nop280_Order_Nop280_OrderNote", Storage="_Order", ThisKey="OrderId", OtherKey="Id", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
		public Nop280_Order Nop280_Order
		{
			get
			{
				return this._Order.Entity;
			}
			set
			{
				Nop280_Order previousValue = this._Order.Entity;
				if (((previousValue != value) 
							|| (this._Order.HasLoadedOrAssignedValue == false)))
				{
					this.SendPropertyChanging();
					if ((previousValue != null))
					{
						this._Order.Entity = null;
						previousValue.Nop280_OrderNotes.Remove(this);
					}
					this._Order.Entity = value;
					if ((value != null))
					{
						value.Nop280_OrderNotes.Add(this);
						this._OrderId = value.Id;
					}
					else
					{
						this._OrderId = default(int);
					}
					this.SendPropertyChanged("Nop280_Order");
				}
			}
		}
		
		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));
			}
		}
	}
}
#pragma warning restore 1591
