Click here to Skip to main content
Click here to Skip to main content
Add your own
alternative version

Take MVC to the Next Level in .NET

, 30 Apr 2013 GPL3
How to quickly build reusable and flexible WPF, Silverlight, or ASP.NET applications with the powerful Xomega Framework using the best MVVM principles.
xomega.fwk_src_1.3.zip
Xomega.Framework
Binding
DataObjects
DataProperties
Lookup
pkg
Package.nuspec
Properties
Services
Silverlight
Web
XomegaFrameworkSamples.zip
MyProject4
MyProject4.Client.Objects
Properties
Sales
MyProject4.Client.Web
Gen
MyProject4.Client.WPF
Gen
MyProject4.Client.WPF.csproj.user
Properties
Settings.settings
MyProject4.Entities
EntityModel.edmx
MyProject4.Entities.csproj.user
Properties
Sales
Services
MyProject4.Model
Framework
base_types.xom
operators.xom
global_config.xom
Import
aw_build_version.xom
database_log.xom
error_log.xom
HumanResources
department.xom
employee.xom
employee_address.xom
employee_department_history.xom
employee_pay_history.xom
job_candidate.xom
shift.xom
Person
address.xom
address_type.xom
contact.xom
contact_type.xom
country_region.xom
state_province.xom
Production
bill_of_materials.xom
culture.xom
document.xom
illustration.xom
location.xom
product.xom
product_category.xom
product_cost_history.xom
product_description.xom
product_document.xom
product_inventory.xom
product_list_price_history.xom
product_model.xom
product_model_illustration.xom
product_model_product_description_culture.xom
product_photo.xom
product_product_photo.xom
product_review.xom
product_subcategory.xom
scrap_reason.xom
transaction_history.xom
transaction_history_archive.xom
unit_measure.xom
work_order.xom
work_order_routing.xom
Purchasing
product_vendor.xom
purchase_order_detail.xom
purchase_order_header.xom
ship_method.xom
vendor.xom
vendor_address.xom
vendor_contact.xom
Sales
contact_credit_card.xom
country_region_currency.xom
credit_card.xom
currency.xom
currency_rate.xom
customer.xom
customer_address.xom
individual.xom
sales_order_detail.xom
sales_order_header.xom
sales_person.xom
sales_person_quota_history.xom
sales_reason.xom
sales_tax_rate.xom
sales_territory.xom
sales_territory_history.xom
shopping_cart_item.xom
special_offer.xom
special_offer_product.xom
store.xom
store_contact.xom
_types.xom
MyProject4.Model.xomproj
MyProject4.Services
Properties
Sales
//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using System.Data.EntityClient;
using System.ComponentModel;
using System.Xml.Serialization;
using System.Runtime.Serialization;

[assembly: EdmSchemaAttribute()]
#region EDM Relationship Metadata

[assembly: EdmRelationshipAttribute("MyProject4Model", "Address_StateProvinceId", "StateProvince", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.StateProvince), "Address", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.Address))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "BillOfMaterials_ComponentId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "BillOfMaterials", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.BillOfMaterials))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "BillOfMaterials_ProductAssemblyId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.Product), "BillOfMaterials", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.BillOfMaterials))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "BillOfMaterials_UnitMeasureCode", "UnitMeasure", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.UnitMeasure), "BillOfMaterials", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.BillOfMaterials))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ContactCreditCard_ContactId", "Contact", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Contact), "ContactCreditCard", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ContactCreditCard), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ContactCreditCard_CreditCardId", "CreditCard", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.CreditCard), "ContactCreditCard", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ContactCreditCard), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "CountryRegionCurrency_CountryRegionCode", "CountryRegion", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.CountryRegion), "CountryRegionCurrency", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.CountryRegionCurrency), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "CountryRegionCurrency_CurrencyCode", "Currency", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Currency), "CountryRegionCurrency", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.CountryRegionCurrency), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "CurrencyRate_FromCurrencyCode", "Currency", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Currency), "CurrencyRate", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.CurrencyRate))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "CurrencyRate_ToCurrencyCode", "Currency", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Currency), "CurrencyRate", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.CurrencyRate))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "CustomerAddress_AddressId", "Address", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Address), "CustomerAddress", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.CustomerAddress), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "CustomerAddress_AddressTypeId", "AddressType", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.AddressType), "CustomerAddress", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.CustomerAddress))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "CustomerAddress_CustomerId", "Customer", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Customer), "CustomerAddress", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.CustomerAddress), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "Customer_TerritoryId", "SalesTerritory", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.SalesTerritory), "Customer", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.Customer))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "EmployeeAddress_AddressId", "Address", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Address), "EmployeeAddress", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.EmployeeAddress), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "EmployeeAddress_EmployeeId", "Employee", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Employee), "EmployeeAddress", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.EmployeeAddress), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "EmployeeDepartmentHistory_DepartmentId", "Department", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Department), "EmployeeDepartmentHistory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.EmployeeDepartmentHistory), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "EmployeeDepartmentHistory_EmployeeId", "Employee", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Employee), "EmployeeDepartmentHistory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.EmployeeDepartmentHistory), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "EmployeeDepartmentHistory_ShiftId", "Shift", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Shift), "EmployeeDepartmentHistory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.EmployeeDepartmentHistory), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "EmployeePayHistory_EmployeeId", "Employee", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Employee), "EmployeePayHistory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.EmployeePayHistory), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "Employee_ContactId", "Contact", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Contact), "Employee", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.Employee))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "Employee_ManagerId", "Employee1", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.Employee), "Employee", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.Employee))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "Individual_ContactId", "Contact", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Contact), "Individual", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.Individual))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "Individual_CustomerId", "Customer", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Customer), "Individual", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.Individual), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "JobCandidate_EmployeeId", "Employee", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.Employee), "JobCandidate", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.JobCandidate))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductCostHistory_ProductId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "ProductCostHistory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductCostHistory), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductDocument_DocumentId", "Document", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Document), "ProductDocument", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductDocument), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductDocument_ProductId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "ProductDocument", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductDocument), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductInventory_LocationId", "Location", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Location), "ProductInventory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductInventory), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductInventory_ProductId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "ProductInventory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductInventory), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductListPriceHistory_ProductId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "ProductListPriceHistory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductListPriceHistory), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductModelIllustration_IllustrationId", "Illustration", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Illustration), "ProductModelIllustration", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductModelIllustration), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductModelIllustration_ProductModelId", "ProductModel", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.ProductModel), "ProductModelIllustration", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductModelIllustration), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductModelProductDescriptionCulture_CultureId", "Culture", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Culture), "ProductModelProductDescriptionCulture", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductModelProductDescriptionCulture), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductModelProductDescriptionCulture_ProductDescriptionId", "ProductDescription", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.ProductDescription), "ProductModelProductDescriptionCulture", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductModelProductDescriptionCulture), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductModelProductDescriptionCulture_ProductModelId", "ProductModel", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.ProductModel), "ProductModelProductDescriptionCulture", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductModelProductDescriptionCulture), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductProductPhoto_ProductId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "ProductProductPhoto", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductProductPhoto), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductProductPhoto_ProductPhotoId", "ProductPhoto", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.ProductPhoto), "ProductProductPhoto", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductProductPhoto), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductReview_ProductId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "ProductReview", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductReview))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductSubcategory_ProductCategoryId", "ProductCategory", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.ProductCategory), "ProductSubcategory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductSubcategory))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductVendor_ProductId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "ProductVendor", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductVendor), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductVendor_UnitMeasureCode", "UnitMeasure", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.UnitMeasure), "ProductVendor", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductVendor))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ProductVendor_VendorId", "Vendor", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Vendor), "ProductVendor", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ProductVendor), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "Product_ProductModelId", "ProductModel", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.ProductModel), "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.Product))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "Product_ProductSubcategoryId", "ProductSubcategory", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.ProductSubcategory), "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.Product))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "Product_SizeUnitMeasureCode", "UnitMeasure", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.UnitMeasure), "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.Product))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "Product_WeightUnitMeasureCode", "UnitMeasure", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.UnitMeasure), "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.Product))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "PurchaseOrderDetail_ProductId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "PurchaseOrderDetail", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.PurchaseOrderDetail))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "PurchaseOrderDetail_PurchaseOrderId", "PurchaseOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.PurchaseOrderHeader), "PurchaseOrderDetail", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.PurchaseOrderDetail), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "PurchaseOrderHeader_EmployeeId", "Employee", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Employee), "PurchaseOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.PurchaseOrderHeader))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "PurchaseOrderHeader_ShipMethodId", "ShipMethod", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.ShipMethod), "PurchaseOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.PurchaseOrderHeader))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "PurchaseOrderHeader_VendorId", "Vendor", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Vendor), "PurchaseOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.PurchaseOrderHeader))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderDetail_SalesOrderId", "SalesOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.SalesOrderHeader), "SalesOrderDetail", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderDetail), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderDetail_SpecialOfferProduct", "SpecialOfferProduct", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.SpecialOfferProduct), "SalesOrderDetail", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderDetail))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderHeaderSalesReason_SalesOrderHeader", "SalesOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.SalesOrderHeader), "SalesOrderHeaderSalesReason", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderHeaderSalesReason), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderHeaderSalesReason_SalesReasonId", "SalesReason", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.SalesReason), "SalesOrderHeaderSalesReason", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderHeaderSalesReason), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderHeader_BillToAddressId", "Address", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Address), "SalesOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderHeader))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderHeader_ContactId", "Contact", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Contact), "SalesOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderHeader))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderHeader_CreditCardId", "CreditCard", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.CreditCard), "SalesOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderHeader))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderHeader_CurrencyRateId", "CurrencyRate", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.CurrencyRate), "SalesOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderHeader))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderHeader_CustomerId", "Customer", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Customer), "SalesOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderHeader))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderHeader_SalesPersonId", "SalesPerson", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.SalesPerson), "SalesOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderHeader))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderHeader_ShipMethodId", "ShipMethod", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.ShipMethod), "SalesOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderHeader))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderHeader_ShipToAddressId", "Address", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Address), "SalesOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderHeader))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesOrderHeader_TerritoryId", "SalesTerritory", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.SalesTerritory), "SalesOrderHeader", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesOrderHeader))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesPersonQuotaHistory_SalesPersonId", "SalesPerson", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.SalesPerson), "SalesPersonQuotaHistory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesPersonQuotaHistory), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesPerson_SalesPersonId", "Employee", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Employee), "SalesPerson", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.SalesPerson), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesPerson_TerritoryId", "SalesTerritory", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.SalesTerritory), "SalesPerson", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesPerson))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesTaxRate_StateProvinceId", "StateProvince", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.StateProvince), "SalesTaxRate", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesTaxRate))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesTerritoryHistory_SalesPersonId", "SalesPerson", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.SalesPerson), "SalesTerritoryHistory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesTerritoryHistory), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SalesTerritoryHistory_TerritoryId", "SalesTerritory", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.SalesTerritory), "SalesTerritoryHistory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SalesTerritoryHistory), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "ShoppingCartItem_ProductId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "ShoppingCartItem", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.ShoppingCartItem))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SpecialOfferProduct_ProductId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "SpecialOfferProduct", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SpecialOfferProduct), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "SpecialOfferProduct_SpecialOfferId", "SpecialOffer", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.SpecialOffer), "SpecialOfferProduct", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.SpecialOfferProduct), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "StateProvince_CountryRegionCode", "CountryRegion", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.CountryRegion), "StateProvince", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.StateProvince))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "StateProvince_TerritoryId", "SalesTerritory", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.SalesTerritory), "StateProvince", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.StateProvince))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "StoreContact_ContactId", "Contact", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Contact), "StoreContact", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.StoreContact), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "StoreContact_ContactTypeId", "ContactType", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.ContactType), "StoreContact", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.StoreContact))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "StoreContact_CustomerId", "Store", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Store), "StoreContact", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.StoreContact), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "Store_CustomerId", "Customer", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Customer), "Store", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.Store), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "Store_SalesPersonId", "SalesPerson", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.SalesPerson), "Store", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.Store))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "TransactionHistory_ProductId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "TransactionHistory", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.TransactionHistory))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "VendorAddress_AddressId", "Address", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Address), "VendorAddress", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.VendorAddress), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "VendorAddress_AddressTypeId", "AddressType", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.AddressType), "VendorAddress", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.VendorAddress))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "VendorAddress_VendorId", "Vendor", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Vendor), "VendorAddress", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.VendorAddress), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "VendorContact_ContactId", "Contact", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Contact), "VendorContact", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.VendorContact), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "VendorContact_ContactTypeId", "ContactType", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.ContactType), "VendorContact", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.VendorContact))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "VendorContact_VendorId", "Vendor", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Vendor), "VendorContact", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.VendorContact), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "WorkOrderRouting_LocationId", "Location", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Location), "WorkOrderRouting", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.WorkOrderRouting))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "WorkOrderRouting_WorkOrderId", "WorkOrder", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.WorkOrder), "WorkOrderRouting", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.WorkOrderRouting), true)]
[assembly: EdmRelationshipAttribute("MyProject4Model", "WorkOrder_ProductId", "Product", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(MyProject4.Entities.Product), "WorkOrder", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.WorkOrder))]
[assembly: EdmRelationshipAttribute("MyProject4Model", "WorkOrder_ScrapReasonId", "ScrapReason", System.Data.Metadata.Edm.RelationshipMultiplicity.ZeroOrOne, typeof(MyProject4.Entities.ScrapReason), "WorkOrder", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(MyProject4.Entities.WorkOrder))]

#endregion

namespace MyProject4.Entities
{
    #region Contexts
    
    /// <summary>
    /// No Metadata Documentation available.
    /// </summary>
    public partial class MyProject4Entities : ObjectContext
    {
        #region Constructors
    
        /// <summary>
        /// Initializes a new MyProject4Entities object using the connection string found in the 'MyProject4Entities' section of the application configuration file.
        /// </summary>
        public MyProject4Entities() : base("name=MyProject4Entities", "MyProject4Entities")
        {
            OnContextCreated();
        }
    
        /// <summary>
        /// Initialize a new MyProject4Entities object.
        /// </summary>
        public MyProject4Entities(string connectionString) : base(connectionString, "MyProject4Entities")
        {
            OnContextCreated();
        }
    
        /// <summary>
        /// Initialize a new MyProject4Entities object.
        /// </summary>
        public MyProject4Entities(EntityConnection connection) : base(connection, "MyProject4Entities")
        {
            OnContextCreated();
        }
    
        #endregion
    
        #region Partial Methods
    
        partial void OnContextCreated();
    
        #endregion
    
        #region ObjectSet Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Address> Address
        {
            get
            {
                if ((_Address == null))
                {
                    _Address = base.CreateObjectSet<Address>("Address");
                }
                return _Address;
            }
        }
        private ObjectSet<Address> _Address;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<AddressType> AddressType
        {
            get
            {
                if ((_AddressType == null))
                {
                    _AddressType = base.CreateObjectSet<AddressType>("AddressType");
                }
                return _AddressType;
            }
        }
        private ObjectSet<AddressType> _AddressType;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<AwBuildVersion> AwBuildVersion
        {
            get
            {
                if ((_AwBuildVersion == null))
                {
                    _AwBuildVersion = base.CreateObjectSet<AwBuildVersion>("AwBuildVersion");
                }
                return _AwBuildVersion;
            }
        }
        private ObjectSet<AwBuildVersion> _AwBuildVersion;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<BillOfMaterials> BillOfMaterials
        {
            get
            {
                if ((_BillOfMaterials == null))
                {
                    _BillOfMaterials = base.CreateObjectSet<BillOfMaterials>("BillOfMaterials");
                }
                return _BillOfMaterials;
            }
        }
        private ObjectSet<BillOfMaterials> _BillOfMaterials;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Contact> Contact
        {
            get
            {
                if ((_Contact == null))
                {
                    _Contact = base.CreateObjectSet<Contact>("Contact");
                }
                return _Contact;
            }
        }
        private ObjectSet<Contact> _Contact;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ContactCreditCard> ContactCreditCard
        {
            get
            {
                if ((_ContactCreditCard == null))
                {
                    _ContactCreditCard = base.CreateObjectSet<ContactCreditCard>("ContactCreditCard");
                }
                return _ContactCreditCard;
            }
        }
        private ObjectSet<ContactCreditCard> _ContactCreditCard;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ContactType> ContactType
        {
            get
            {
                if ((_ContactType == null))
                {
                    _ContactType = base.CreateObjectSet<ContactType>("ContactType");
                }
                return _ContactType;
            }
        }
        private ObjectSet<ContactType> _ContactType;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<CountryRegion> CountryRegion
        {
            get
            {
                if ((_CountryRegion == null))
                {
                    _CountryRegion = base.CreateObjectSet<CountryRegion>("CountryRegion");
                }
                return _CountryRegion;
            }
        }
        private ObjectSet<CountryRegion> _CountryRegion;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<CountryRegionCurrency> CountryRegionCurrency
        {
            get
            {
                if ((_CountryRegionCurrency == null))
                {
                    _CountryRegionCurrency = base.CreateObjectSet<CountryRegionCurrency>("CountryRegionCurrency");
                }
                return _CountryRegionCurrency;
            }
        }
        private ObjectSet<CountryRegionCurrency> _CountryRegionCurrency;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<CreditCard> CreditCard
        {
            get
            {
                if ((_CreditCard == null))
                {
                    _CreditCard = base.CreateObjectSet<CreditCard>("CreditCard");
                }
                return _CreditCard;
            }
        }
        private ObjectSet<CreditCard> _CreditCard;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Culture> Culture
        {
            get
            {
                if ((_Culture == null))
                {
                    _Culture = base.CreateObjectSet<Culture>("Culture");
                }
                return _Culture;
            }
        }
        private ObjectSet<Culture> _Culture;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Currency> Currency
        {
            get
            {
                if ((_Currency == null))
                {
                    _Currency = base.CreateObjectSet<Currency>("Currency");
                }
                return _Currency;
            }
        }
        private ObjectSet<Currency> _Currency;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<CurrencyRate> CurrencyRate
        {
            get
            {
                if ((_CurrencyRate == null))
                {
                    _CurrencyRate = base.CreateObjectSet<CurrencyRate>("CurrencyRate");
                }
                return _CurrencyRate;
            }
        }
        private ObjectSet<CurrencyRate> _CurrencyRate;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Customer> Customer
        {
            get
            {
                if ((_Customer == null))
                {
                    _Customer = base.CreateObjectSet<Customer>("Customer");
                }
                return _Customer;
            }
        }
        private ObjectSet<Customer> _Customer;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<CustomerAddress> CustomerAddress
        {
            get
            {
                if ((_CustomerAddress == null))
                {
                    _CustomerAddress = base.CreateObjectSet<CustomerAddress>("CustomerAddress");
                }
                return _CustomerAddress;
            }
        }
        private ObjectSet<CustomerAddress> _CustomerAddress;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<DatabaseLog> DatabaseLog
        {
            get
            {
                if ((_DatabaseLog == null))
                {
                    _DatabaseLog = base.CreateObjectSet<DatabaseLog>("DatabaseLog");
                }
                return _DatabaseLog;
            }
        }
        private ObjectSet<DatabaseLog> _DatabaseLog;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Department> Department
        {
            get
            {
                if ((_Department == null))
                {
                    _Department = base.CreateObjectSet<Department>("Department");
                }
                return _Department;
            }
        }
        private ObjectSet<Department> _Department;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Document> Document
        {
            get
            {
                if ((_Document == null))
                {
                    _Document = base.CreateObjectSet<Document>("Document");
                }
                return _Document;
            }
        }
        private ObjectSet<Document> _Document;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Employee> Employee
        {
            get
            {
                if ((_Employee == null))
                {
                    _Employee = base.CreateObjectSet<Employee>("Employee");
                }
                return _Employee;
            }
        }
        private ObjectSet<Employee> _Employee;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<EmployeeAddress> EmployeeAddress
        {
            get
            {
                if ((_EmployeeAddress == null))
                {
                    _EmployeeAddress = base.CreateObjectSet<EmployeeAddress>("EmployeeAddress");
                }
                return _EmployeeAddress;
            }
        }
        private ObjectSet<EmployeeAddress> _EmployeeAddress;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<EmployeeDepartmentHistory> EmployeeDepartmentHistory
        {
            get
            {
                if ((_EmployeeDepartmentHistory == null))
                {
                    _EmployeeDepartmentHistory = base.CreateObjectSet<EmployeeDepartmentHistory>("EmployeeDepartmentHistory");
                }
                return _EmployeeDepartmentHistory;
            }
        }
        private ObjectSet<EmployeeDepartmentHistory> _EmployeeDepartmentHistory;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<EmployeePayHistory> EmployeePayHistory
        {
            get
            {
                if ((_EmployeePayHistory == null))
                {
                    _EmployeePayHistory = base.CreateObjectSet<EmployeePayHistory>("EmployeePayHistory");
                }
                return _EmployeePayHistory;
            }
        }
        private ObjectSet<EmployeePayHistory> _EmployeePayHistory;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ErrorLog> ErrorLog
        {
            get
            {
                if ((_ErrorLog == null))
                {
                    _ErrorLog = base.CreateObjectSet<ErrorLog>("ErrorLog");
                }
                return _ErrorLog;
            }
        }
        private ObjectSet<ErrorLog> _ErrorLog;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Illustration> Illustration
        {
            get
            {
                if ((_Illustration == null))
                {
                    _Illustration = base.CreateObjectSet<Illustration>("Illustration");
                }
                return _Illustration;
            }
        }
        private ObjectSet<Illustration> _Illustration;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Individual> Individual
        {
            get
            {
                if ((_Individual == null))
                {
                    _Individual = base.CreateObjectSet<Individual>("Individual");
                }
                return _Individual;
            }
        }
        private ObjectSet<Individual> _Individual;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<JobCandidate> JobCandidate
        {
            get
            {
                if ((_JobCandidate == null))
                {
                    _JobCandidate = base.CreateObjectSet<JobCandidate>("JobCandidate");
                }
                return _JobCandidate;
            }
        }
        private ObjectSet<JobCandidate> _JobCandidate;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Location> Location
        {
            get
            {
                if ((_Location == null))
                {
                    _Location = base.CreateObjectSet<Location>("Location");
                }
                return _Location;
            }
        }
        private ObjectSet<Location> _Location;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Product> Product
        {
            get
            {
                if ((_Product == null))
                {
                    _Product = base.CreateObjectSet<Product>("Product");
                }
                return _Product;
            }
        }
        private ObjectSet<Product> _Product;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductCategory> ProductCategory
        {
            get
            {
                if ((_ProductCategory == null))
                {
                    _ProductCategory = base.CreateObjectSet<ProductCategory>("ProductCategory");
                }
                return _ProductCategory;
            }
        }
        private ObjectSet<ProductCategory> _ProductCategory;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductCostHistory> ProductCostHistory
        {
            get
            {
                if ((_ProductCostHistory == null))
                {
                    _ProductCostHistory = base.CreateObjectSet<ProductCostHistory>("ProductCostHistory");
                }
                return _ProductCostHistory;
            }
        }
        private ObjectSet<ProductCostHistory> _ProductCostHistory;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductDescription> ProductDescription
        {
            get
            {
                if ((_ProductDescription == null))
                {
                    _ProductDescription = base.CreateObjectSet<ProductDescription>("ProductDescription");
                }
                return _ProductDescription;
            }
        }
        private ObjectSet<ProductDescription> _ProductDescription;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductDocument> ProductDocument
        {
            get
            {
                if ((_ProductDocument == null))
                {
                    _ProductDocument = base.CreateObjectSet<ProductDocument>("ProductDocument");
                }
                return _ProductDocument;
            }
        }
        private ObjectSet<ProductDocument> _ProductDocument;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductInventory> ProductInventory
        {
            get
            {
                if ((_ProductInventory == null))
                {
                    _ProductInventory = base.CreateObjectSet<ProductInventory>("ProductInventory");
                }
                return _ProductInventory;
            }
        }
        private ObjectSet<ProductInventory> _ProductInventory;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductListPriceHistory> ProductListPriceHistory
        {
            get
            {
                if ((_ProductListPriceHistory == null))
                {
                    _ProductListPriceHistory = base.CreateObjectSet<ProductListPriceHistory>("ProductListPriceHistory");
                }
                return _ProductListPriceHistory;
            }
        }
        private ObjectSet<ProductListPriceHistory> _ProductListPriceHistory;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductModel> ProductModel
        {
            get
            {
                if ((_ProductModel == null))
                {
                    _ProductModel = base.CreateObjectSet<ProductModel>("ProductModel");
                }
                return _ProductModel;
            }
        }
        private ObjectSet<ProductModel> _ProductModel;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductModelIllustration> ProductModelIllustration
        {
            get
            {
                if ((_ProductModelIllustration == null))
                {
                    _ProductModelIllustration = base.CreateObjectSet<ProductModelIllustration>("ProductModelIllustration");
                }
                return _ProductModelIllustration;
            }
        }
        private ObjectSet<ProductModelIllustration> _ProductModelIllustration;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductModelProductDescriptionCulture> ProductModelProductDescriptionCulture
        {
            get
            {
                if ((_ProductModelProductDescriptionCulture == null))
                {
                    _ProductModelProductDescriptionCulture = base.CreateObjectSet<ProductModelProductDescriptionCulture>("ProductModelProductDescriptionCulture");
                }
                return _ProductModelProductDescriptionCulture;
            }
        }
        private ObjectSet<ProductModelProductDescriptionCulture> _ProductModelProductDescriptionCulture;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductPhoto> ProductPhoto
        {
            get
            {
                if ((_ProductPhoto == null))
                {
                    _ProductPhoto = base.CreateObjectSet<ProductPhoto>("ProductPhoto");
                }
                return _ProductPhoto;
            }
        }
        private ObjectSet<ProductPhoto> _ProductPhoto;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductProductPhoto> ProductProductPhoto
        {
            get
            {
                if ((_ProductProductPhoto == null))
                {
                    _ProductProductPhoto = base.CreateObjectSet<ProductProductPhoto>("ProductProductPhoto");
                }
                return _ProductProductPhoto;
            }
        }
        private ObjectSet<ProductProductPhoto> _ProductProductPhoto;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductReview> ProductReview
        {
            get
            {
                if ((_ProductReview == null))
                {
                    _ProductReview = base.CreateObjectSet<ProductReview>("ProductReview");
                }
                return _ProductReview;
            }
        }
        private ObjectSet<ProductReview> _ProductReview;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductSubcategory> ProductSubcategory
        {
            get
            {
                if ((_ProductSubcategory == null))
                {
                    _ProductSubcategory = base.CreateObjectSet<ProductSubcategory>("ProductSubcategory");
                }
                return _ProductSubcategory;
            }
        }
        private ObjectSet<ProductSubcategory> _ProductSubcategory;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ProductVendor> ProductVendor
        {
            get
            {
                if ((_ProductVendor == null))
                {
                    _ProductVendor = base.CreateObjectSet<ProductVendor>("ProductVendor");
                }
                return _ProductVendor;
            }
        }
        private ObjectSet<ProductVendor> _ProductVendor;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<PurchaseOrderDetail> PurchaseOrderDetail
        {
            get
            {
                if ((_PurchaseOrderDetail == null))
                {
                    _PurchaseOrderDetail = base.CreateObjectSet<PurchaseOrderDetail>("PurchaseOrderDetail");
                }
                return _PurchaseOrderDetail;
            }
        }
        private ObjectSet<PurchaseOrderDetail> _PurchaseOrderDetail;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<PurchaseOrderHeader> PurchaseOrderHeader
        {
            get
            {
                if ((_PurchaseOrderHeader == null))
                {
                    _PurchaseOrderHeader = base.CreateObjectSet<PurchaseOrderHeader>("PurchaseOrderHeader");
                }
                return _PurchaseOrderHeader;
            }
        }
        private ObjectSet<PurchaseOrderHeader> _PurchaseOrderHeader;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<SalesOrderDetail> SalesOrderDetail
        {
            get
            {
                if ((_SalesOrderDetail == null))
                {
                    _SalesOrderDetail = base.CreateObjectSet<SalesOrderDetail>("SalesOrderDetail");
                }
                return _SalesOrderDetail;
            }
        }
        private ObjectSet<SalesOrderDetail> _SalesOrderDetail;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<SalesOrderHeader> SalesOrderHeader
        {
            get
            {
                if ((_SalesOrderHeader == null))
                {
                    _SalesOrderHeader = base.CreateObjectSet<SalesOrderHeader>("SalesOrderHeader");
                }
                return _SalesOrderHeader;
            }
        }
        private ObjectSet<SalesOrderHeader> _SalesOrderHeader;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<SalesOrderHeaderSalesReason> SalesOrderHeaderSalesReason
        {
            get
            {
                if ((_SalesOrderHeaderSalesReason == null))
                {
                    _SalesOrderHeaderSalesReason = base.CreateObjectSet<SalesOrderHeaderSalesReason>("SalesOrderHeaderSalesReason");
                }
                return _SalesOrderHeaderSalesReason;
            }
        }
        private ObjectSet<SalesOrderHeaderSalesReason> _SalesOrderHeaderSalesReason;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<SalesPerson> SalesPerson
        {
            get
            {
                if ((_SalesPerson == null))
                {
                    _SalesPerson = base.CreateObjectSet<SalesPerson>("SalesPerson");
                }
                return _SalesPerson;
            }
        }
        private ObjectSet<SalesPerson> _SalesPerson;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<SalesPersonQuotaHistory> SalesPersonQuotaHistory
        {
            get
            {
                if ((_SalesPersonQuotaHistory == null))
                {
                    _SalesPersonQuotaHistory = base.CreateObjectSet<SalesPersonQuotaHistory>("SalesPersonQuotaHistory");
                }
                return _SalesPersonQuotaHistory;
            }
        }
        private ObjectSet<SalesPersonQuotaHistory> _SalesPersonQuotaHistory;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<SalesReason> SalesReason
        {
            get
            {
                if ((_SalesReason == null))
                {
                    _SalesReason = base.CreateObjectSet<SalesReason>("SalesReason");
                }
                return _SalesReason;
            }
        }
        private ObjectSet<SalesReason> _SalesReason;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<SalesTaxRate> SalesTaxRate
        {
            get
            {
                if ((_SalesTaxRate == null))
                {
                    _SalesTaxRate = base.CreateObjectSet<SalesTaxRate>("SalesTaxRate");
                }
                return _SalesTaxRate;
            }
        }
        private ObjectSet<SalesTaxRate> _SalesTaxRate;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<SalesTerritory> SalesTerritory
        {
            get
            {
                if ((_SalesTerritory == null))
                {
                    _SalesTerritory = base.CreateObjectSet<SalesTerritory>("SalesTerritory");
                }
                return _SalesTerritory;
            }
        }
        private ObjectSet<SalesTerritory> _SalesTerritory;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<SalesTerritoryHistory> SalesTerritoryHistory
        {
            get
            {
                if ((_SalesTerritoryHistory == null))
                {
                    _SalesTerritoryHistory = base.CreateObjectSet<SalesTerritoryHistory>("SalesTerritoryHistory");
                }
                return _SalesTerritoryHistory;
            }
        }
        private ObjectSet<SalesTerritoryHistory> _SalesTerritoryHistory;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ScrapReason> ScrapReason
        {
            get
            {
                if ((_ScrapReason == null))
                {
                    _ScrapReason = base.CreateObjectSet<ScrapReason>("ScrapReason");
                }
                return _ScrapReason;
            }
        }
        private ObjectSet<ScrapReason> _ScrapReason;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Shift> Shift
        {
            get
            {
                if ((_Shift == null))
                {
                    _Shift = base.CreateObjectSet<Shift>("Shift");
                }
                return _Shift;
            }
        }
        private ObjectSet<Shift> _Shift;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ShipMethod> ShipMethod
        {
            get
            {
                if ((_ShipMethod == null))
                {
                    _ShipMethod = base.CreateObjectSet<ShipMethod>("ShipMethod");
                }
                return _ShipMethod;
            }
        }
        private ObjectSet<ShipMethod> _ShipMethod;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<ShoppingCartItem> ShoppingCartItem
        {
            get
            {
                if ((_ShoppingCartItem == null))
                {
                    _ShoppingCartItem = base.CreateObjectSet<ShoppingCartItem>("ShoppingCartItem");
                }
                return _ShoppingCartItem;
            }
        }
        private ObjectSet<ShoppingCartItem> _ShoppingCartItem;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<SpecialOffer> SpecialOffer
        {
            get
            {
                if ((_SpecialOffer == null))
                {
                    _SpecialOffer = base.CreateObjectSet<SpecialOffer>("SpecialOffer");
                }
                return _SpecialOffer;
            }
        }
        private ObjectSet<SpecialOffer> _SpecialOffer;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<SpecialOfferProduct> SpecialOfferProduct
        {
            get
            {
                if ((_SpecialOfferProduct == null))
                {
                    _SpecialOfferProduct = base.CreateObjectSet<SpecialOfferProduct>("SpecialOfferProduct");
                }
                return _SpecialOfferProduct;
            }
        }
        private ObjectSet<SpecialOfferProduct> _SpecialOfferProduct;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<StateProvince> StateProvince
        {
            get
            {
                if ((_StateProvince == null))
                {
                    _StateProvince = base.CreateObjectSet<StateProvince>("StateProvince");
                }
                return _StateProvince;
            }
        }
        private ObjectSet<StateProvince> _StateProvince;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Store> Store
        {
            get
            {
                if ((_Store == null))
                {
                    _Store = base.CreateObjectSet<Store>("Store");
                }
                return _Store;
            }
        }
        private ObjectSet<Store> _Store;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<StoreContact> StoreContact
        {
            get
            {
                if ((_StoreContact == null))
                {
                    _StoreContact = base.CreateObjectSet<StoreContact>("StoreContact");
                }
                return _StoreContact;
            }
        }
        private ObjectSet<StoreContact> _StoreContact;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<TransactionHistory> TransactionHistory
        {
            get
            {
                if ((_TransactionHistory == null))
                {
                    _TransactionHistory = base.CreateObjectSet<TransactionHistory>("TransactionHistory");
                }
                return _TransactionHistory;
            }
        }
        private ObjectSet<TransactionHistory> _TransactionHistory;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<TransactionHistoryArchive> TransactionHistoryArchive
        {
            get
            {
                if ((_TransactionHistoryArchive == null))
                {
                    _TransactionHistoryArchive = base.CreateObjectSet<TransactionHistoryArchive>("TransactionHistoryArchive");
                }
                return _TransactionHistoryArchive;
            }
        }
        private ObjectSet<TransactionHistoryArchive> _TransactionHistoryArchive;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<UnitMeasure> UnitMeasure
        {
            get
            {
                if ((_UnitMeasure == null))
                {
                    _UnitMeasure = base.CreateObjectSet<UnitMeasure>("UnitMeasure");
                }
                return _UnitMeasure;
            }
        }
        private ObjectSet<UnitMeasure> _UnitMeasure;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<Vendor> Vendor
        {
            get
            {
                if ((_Vendor == null))
                {
                    _Vendor = base.CreateObjectSet<Vendor>("Vendor");
                }
                return _Vendor;
            }
        }
        private ObjectSet<Vendor> _Vendor;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<VendorAddress> VendorAddress
        {
            get
            {
                if ((_VendorAddress == null))
                {
                    _VendorAddress = base.CreateObjectSet<VendorAddress>("VendorAddress");
                }
                return _VendorAddress;
            }
        }
        private ObjectSet<VendorAddress> _VendorAddress;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<VendorContact> VendorContact
        {
            get
            {
                if ((_VendorContact == null))
                {
                    _VendorContact = base.CreateObjectSet<VendorContact>("VendorContact");
                }
                return _VendorContact;
            }
        }
        private ObjectSet<VendorContact> _VendorContact;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<WorkOrder> WorkOrder
        {
            get
            {
                if ((_WorkOrder == null))
                {
                    _WorkOrder = base.CreateObjectSet<WorkOrder>("WorkOrder");
                }
                return _WorkOrder;
            }
        }
        private ObjectSet<WorkOrder> _WorkOrder;
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        public ObjectSet<WorkOrderRouting> WorkOrderRouting
        {
            get
            {
                if ((_WorkOrderRouting == null))
                {
                    _WorkOrderRouting = base.CreateObjectSet<WorkOrderRouting>("WorkOrderRouting");
                }
                return _WorkOrderRouting;
            }
        }
        private ObjectSet<WorkOrderRouting> _WorkOrderRouting;

        #endregion
        #region AddTo Methods
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Address EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToAddress(Address address)
        {
            base.AddObject("Address", address);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the AddressType EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToAddressType(AddressType addressType)
        {
            base.AddObject("AddressType", addressType);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the AwBuildVersion EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToAwBuildVersion(AwBuildVersion awBuildVersion)
        {
            base.AddObject("AwBuildVersion", awBuildVersion);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the BillOfMaterials EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToBillOfMaterials(BillOfMaterials billOfMaterials)
        {
            base.AddObject("BillOfMaterials", billOfMaterials);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Contact EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToContact(Contact contact)
        {
            base.AddObject("Contact", contact);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ContactCreditCard EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToContactCreditCard(ContactCreditCard contactCreditCard)
        {
            base.AddObject("ContactCreditCard", contactCreditCard);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ContactType EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToContactType(ContactType contactType)
        {
            base.AddObject("ContactType", contactType);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the CountryRegion EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToCountryRegion(CountryRegion countryRegion)
        {
            base.AddObject("CountryRegion", countryRegion);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the CountryRegionCurrency EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToCountryRegionCurrency(CountryRegionCurrency countryRegionCurrency)
        {
            base.AddObject("CountryRegionCurrency", countryRegionCurrency);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the CreditCard EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToCreditCard(CreditCard creditCard)
        {
            base.AddObject("CreditCard", creditCard);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Culture EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToCulture(Culture culture)
        {
            base.AddObject("Culture", culture);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Currency EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToCurrency(Currency currency)
        {
            base.AddObject("Currency", currency);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the CurrencyRate EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToCurrencyRate(CurrencyRate currencyRate)
        {
            base.AddObject("CurrencyRate", currencyRate);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Customer EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToCustomer(Customer customer)
        {
            base.AddObject("Customer", customer);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the CustomerAddress EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToCustomerAddress(CustomerAddress customerAddress)
        {
            base.AddObject("CustomerAddress", customerAddress);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the DatabaseLog EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToDatabaseLog(DatabaseLog databaseLog)
        {
            base.AddObject("DatabaseLog", databaseLog);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Department EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToDepartment(Department department)
        {
            base.AddObject("Department", department);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Document EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToDocument(Document document)
        {
            base.AddObject("Document", document);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Employee EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToEmployee(Employee employee)
        {
            base.AddObject("Employee", employee);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the EmployeeAddress EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToEmployeeAddress(EmployeeAddress employeeAddress)
        {
            base.AddObject("EmployeeAddress", employeeAddress);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the EmployeeDepartmentHistory EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToEmployeeDepartmentHistory(EmployeeDepartmentHistory employeeDepartmentHistory)
        {
            base.AddObject("EmployeeDepartmentHistory", employeeDepartmentHistory);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the EmployeePayHistory EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToEmployeePayHistory(EmployeePayHistory employeePayHistory)
        {
            base.AddObject("EmployeePayHistory", employeePayHistory);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ErrorLog EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToErrorLog(ErrorLog errorLog)
        {
            base.AddObject("ErrorLog", errorLog);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Illustration EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToIllustration(Illustration illustration)
        {
            base.AddObject("Illustration", illustration);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Individual EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToIndividual(Individual individual)
        {
            base.AddObject("Individual", individual);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the JobCandidate EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToJobCandidate(JobCandidate jobCandidate)
        {
            base.AddObject("JobCandidate", jobCandidate);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Location EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToLocation(Location location)
        {
            base.AddObject("Location", location);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Product EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProduct(Product product)
        {
            base.AddObject("Product", product);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductCategory EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductCategory(ProductCategory productCategory)
        {
            base.AddObject("ProductCategory", productCategory);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductCostHistory EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductCostHistory(ProductCostHistory productCostHistory)
        {
            base.AddObject("ProductCostHistory", productCostHistory);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductDescription EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductDescription(ProductDescription productDescription)
        {
            base.AddObject("ProductDescription", productDescription);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductDocument EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductDocument(ProductDocument productDocument)
        {
            base.AddObject("ProductDocument", productDocument);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductInventory EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductInventory(ProductInventory productInventory)
        {
            base.AddObject("ProductInventory", productInventory);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductListPriceHistory EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductListPriceHistory(ProductListPriceHistory productListPriceHistory)
        {
            base.AddObject("ProductListPriceHistory", productListPriceHistory);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductModel EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductModel(ProductModel productModel)
        {
            base.AddObject("ProductModel", productModel);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductModelIllustration EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductModelIllustration(ProductModelIllustration productModelIllustration)
        {
            base.AddObject("ProductModelIllustration", productModelIllustration);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductModelProductDescriptionCulture EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductModelProductDescriptionCulture(ProductModelProductDescriptionCulture productModelProductDescriptionCulture)
        {
            base.AddObject("ProductModelProductDescriptionCulture", productModelProductDescriptionCulture);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductPhoto EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductPhoto(ProductPhoto productPhoto)
        {
            base.AddObject("ProductPhoto", productPhoto);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductProductPhoto EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductProductPhoto(ProductProductPhoto productProductPhoto)
        {
            base.AddObject("ProductProductPhoto", productProductPhoto);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductReview EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductReview(ProductReview productReview)
        {
            base.AddObject("ProductReview", productReview);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductSubcategory EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductSubcategory(ProductSubcategory productSubcategory)
        {
            base.AddObject("ProductSubcategory", productSubcategory);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ProductVendor EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToProductVendor(ProductVendor productVendor)
        {
            base.AddObject("ProductVendor", productVendor);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the PurchaseOrderDetail EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToPurchaseOrderDetail(PurchaseOrderDetail purchaseOrderDetail)
        {
            base.AddObject("PurchaseOrderDetail", purchaseOrderDetail);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the PurchaseOrderHeader EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToPurchaseOrderHeader(PurchaseOrderHeader purchaseOrderHeader)
        {
            base.AddObject("PurchaseOrderHeader", purchaseOrderHeader);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the SalesOrderDetail EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToSalesOrderDetail(SalesOrderDetail salesOrderDetail)
        {
            base.AddObject("SalesOrderDetail", salesOrderDetail);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the SalesOrderHeader EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToSalesOrderHeader(SalesOrderHeader salesOrderHeader)
        {
            base.AddObject("SalesOrderHeader", salesOrderHeader);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the SalesOrderHeaderSalesReason EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToSalesOrderHeaderSalesReason(SalesOrderHeaderSalesReason salesOrderHeaderSalesReason)
        {
            base.AddObject("SalesOrderHeaderSalesReason", salesOrderHeaderSalesReason);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the SalesPerson EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToSalesPerson(SalesPerson salesPerson)
        {
            base.AddObject("SalesPerson", salesPerson);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the SalesPersonQuotaHistory EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToSalesPersonQuotaHistory(SalesPersonQuotaHistory salesPersonQuotaHistory)
        {
            base.AddObject("SalesPersonQuotaHistory", salesPersonQuotaHistory);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the SalesReason EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToSalesReason(SalesReason salesReason)
        {
            base.AddObject("SalesReason", salesReason);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the SalesTaxRate EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToSalesTaxRate(SalesTaxRate salesTaxRate)
        {
            base.AddObject("SalesTaxRate", salesTaxRate);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the SalesTerritory EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToSalesTerritory(SalesTerritory salesTerritory)
        {
            base.AddObject("SalesTerritory", salesTerritory);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the SalesTerritoryHistory EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToSalesTerritoryHistory(SalesTerritoryHistory salesTerritoryHistory)
        {
            base.AddObject("SalesTerritoryHistory", salesTerritoryHistory);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ScrapReason EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToScrapReason(ScrapReason scrapReason)
        {
            base.AddObject("ScrapReason", scrapReason);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Shift EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToShift(Shift shift)
        {
            base.AddObject("Shift", shift);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ShipMethod EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToShipMethod(ShipMethod shipMethod)
        {
            base.AddObject("ShipMethod", shipMethod);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the ShoppingCartItem EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToShoppingCartItem(ShoppingCartItem shoppingCartItem)
        {
            base.AddObject("ShoppingCartItem", shoppingCartItem);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the SpecialOffer EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToSpecialOffer(SpecialOffer specialOffer)
        {
            base.AddObject("SpecialOffer", specialOffer);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the SpecialOfferProduct EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToSpecialOfferProduct(SpecialOfferProduct specialOfferProduct)
        {
            base.AddObject("SpecialOfferProduct", specialOfferProduct);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the StateProvince EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToStateProvince(StateProvince stateProvince)
        {
            base.AddObject("StateProvince", stateProvince);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Store EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToStore(Store store)
        {
            base.AddObject("Store", store);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the StoreContact EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToStoreContact(StoreContact storeContact)
        {
            base.AddObject("StoreContact", storeContact);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the TransactionHistory EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToTransactionHistory(TransactionHistory transactionHistory)
        {
            base.AddObject("TransactionHistory", transactionHistory);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the TransactionHistoryArchive EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToTransactionHistoryArchive(TransactionHistoryArchive transactionHistoryArchive)
        {
            base.AddObject("TransactionHistoryArchive", transactionHistoryArchive);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the UnitMeasure EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToUnitMeasure(UnitMeasure unitMeasure)
        {
            base.AddObject("UnitMeasure", unitMeasure);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the Vendor EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToVendor(Vendor vendor)
        {
            base.AddObject("Vendor", vendor);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the VendorAddress EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToVendorAddress(VendorAddress vendorAddress)
        {
            base.AddObject("VendorAddress", vendorAddress);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the VendorContact EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToVendorContact(VendorContact vendorContact)
        {
            base.AddObject("VendorContact", vendorContact);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the WorkOrder EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToWorkOrder(WorkOrder workOrder)
        {
            base.AddObject("WorkOrder", workOrder);
        }
    
        /// <summary>
        /// Deprecated Method for adding a new object to the WorkOrderRouting EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
        /// </summary>
        public void AddToWorkOrderRouting(WorkOrderRouting workOrderRouting)
        {
            base.AddObject("WorkOrderRouting", workOrderRouting);
        }

        #endregion
    }
    

    #endregion
    
    #region Entities
    
    /// <summary>
    /// Street address information for customers, employees, and vendors.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Address")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Address : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Address object.
        /// </summary>
        /// <param name="addressId">Initial value of the AddressId property.</param>
        /// <param name="addressLine1">Initial value of the AddressLine1 property.</param>
        /// <param name="city">Initial value of the City property.</param>
        /// <param name="postalCode">Initial value of the PostalCode property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Address CreateAddress(global::System.Int32 addressId, global::System.String addressLine1, global::System.String city, global::System.String postalCode, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            Address address = new Address();
            address.AddressId = addressId;
            address.AddressLine1 = addressLine1;
            address.City = city;
            address.PostalCode = postalCode;
            address.Rowguid = rowguid;
            address.ModifiedDate = modifiedDate;
            return address;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 AddressId
        {
            get
            {
                return _AddressId;
            }
            set
            {
                if (_AddressId != value)
                {
                    OnAddressIdChanging(value);
                    ReportPropertyChanging("AddressId");
                    _AddressId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("AddressId");
                    OnAddressIdChanged();
                }
            }
        }
        private global::System.Int32 _AddressId;
        partial void OnAddressIdChanging(global::System.Int32 value);
        partial void OnAddressIdChanged();
    
        /// <summary>
        /// First street address line.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String AddressLine1
        {
            get
            {
                return _AddressLine1;
            }
            set
            {
                OnAddressLine1Changing(value);
                ReportPropertyChanging("AddressLine1");
                _AddressLine1 = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("AddressLine1");
                OnAddressLine1Changed();
            }
        }
        private global::System.String _AddressLine1;
        partial void OnAddressLine1Changing(global::System.String value);
        partial void OnAddressLine1Changed();
    
        /// <summary>
        /// Second street address line.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String AddressLine2
        {
            get
            {
                return _AddressLine2;
            }
            set
            {
                OnAddressLine2Changing(value);
                ReportPropertyChanging("AddressLine2");
                _AddressLine2 = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("AddressLine2");
                OnAddressLine2Changed();
            }
        }
        private global::System.String _AddressLine2;
        partial void OnAddressLine2Changing(global::System.String value);
        partial void OnAddressLine2Changed();
    
        /// <summary>
        /// Name of the city.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String City
        {
            get
            {
                return _City;
            }
            set
            {
                OnCityChanging(value);
                ReportPropertyChanging("City");
                _City = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("City");
                OnCityChanged();
            }
        }
        private global::System.String _City;
        partial void OnCityChanging(global::System.String value);
        partial void OnCityChanged();
    
        /// <summary>
        /// Postal code for the street address.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String PostalCode
        {
            get
            {
                return _PostalCode;
            }
            set
            {
                OnPostalCodeChanging(value);
                ReportPropertyChanging("PostalCode");
                _PostalCode = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("PostalCode");
                OnPostalCodeChanged();
            }
        }
        private global::System.String _PostalCode;
        partial void OnPostalCodeChanging(global::System.String value);
        partial void OnPostalCodeChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "Address_StateProvinceId", "StateProvince")]
        public StateProvince StateProvinceIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<StateProvince>("MyProject4Model.Address_StateProvinceId", "StateProvince").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<StateProvince>("MyProject4Model.Address_StateProvinceId", "StateProvince").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<StateProvince> StateProvinceIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<StateProvince>("MyProject4Model.Address_StateProvinceId", "StateProvince");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<StateProvince>("MyProject4Model.Address_StateProvinceId", "StateProvince", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Types of addresses stored in the Address table. 
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="AddressType")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class AddressType : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new AddressType object.
        /// </summary>
        /// <param name="addressTypeId">Initial value of the AddressTypeId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static AddressType CreateAddressType(global::System.Int32 addressTypeId, global::System.String name, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            AddressType addressType = new AddressType();
            addressType.AddressTypeId = addressTypeId;
            addressType.Name = name;
            addressType.Rowguid = rowguid;
            addressType.ModifiedDate = modifiedDate;
            return addressType;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 AddressTypeId
        {
            get
            {
                return _AddressTypeId;
            }
            set
            {
                if (_AddressTypeId != value)
                {
                    OnAddressTypeIdChanging(value);
                    ReportPropertyChanging("AddressTypeId");
                    _AddressTypeId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("AddressTypeId");
                    OnAddressTypeIdChanged();
                }
            }
        }
        private global::System.Int32 _AddressTypeId;
        partial void OnAddressTypeIdChanging(global::System.Int32 value);
        partial void OnAddressTypeIdChanged();
    
        /// <summary>
        /// Address type description. For example, Billing, Home, or Shipping.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Current version number of the AdventureWorks sample database. 
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="AwBuildVersion")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class AwBuildVersion : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new AwBuildVersion object.
        /// </summary>
        /// <param name="systemInformationId">Initial value of the SystemInformationId property.</param>
        /// <param name="databaseVersion">Initial value of the DatabaseVersion property.</param>
        /// <param name="versionDate">Initial value of the VersionDate property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static AwBuildVersion CreateAwBuildVersion(global::System.Byte systemInformationId, global::System.String databaseVersion, global::System.DateTime versionDate, global::System.DateTime modifiedDate)
        {
            AwBuildVersion awBuildVersion = new AwBuildVersion();
            awBuildVersion.SystemInformationId = systemInformationId;
            awBuildVersion.DatabaseVersion = databaseVersion;
            awBuildVersion.VersionDate = versionDate;
            awBuildVersion.ModifiedDate = modifiedDate;
            return awBuildVersion;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte SystemInformationId
        {
            get
            {
                return _SystemInformationId;
            }
            set
            {
                if (_SystemInformationId != value)
                {
                    OnSystemInformationIdChanging(value);
                    ReportPropertyChanging("SystemInformationId");
                    _SystemInformationId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SystemInformationId");
                    OnSystemInformationIdChanged();
                }
            }
        }
        private global::System.Byte _SystemInformationId;
        partial void OnSystemInformationIdChanging(global::System.Byte value);
        partial void OnSystemInformationIdChanged();
    
        /// <summary>
        /// Version number of the database in 9.yy.mm.dd.00 format.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String DatabaseVersion
        {
            get
            {
                return _DatabaseVersion;
            }
            set
            {
                OnDatabaseVersionChanging(value);
                ReportPropertyChanging("DatabaseVersion");
                _DatabaseVersion = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("DatabaseVersion");
                OnDatabaseVersionChanged();
            }
        }
        private global::System.String _DatabaseVersion;
        partial void OnDatabaseVersionChanging(global::System.String value);
        partial void OnDatabaseVersionChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime VersionDate
        {
            get
            {
                return _VersionDate;
            }
            set
            {
                OnVersionDateChanging(value);
                ReportPropertyChanging("VersionDate");
                _VersionDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("VersionDate");
                OnVersionDateChanged();
            }
        }
        private global::System.DateTime _VersionDate;
        partial void OnVersionDateChanging(global::System.DateTime value);
        partial void OnVersionDateChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Items required to make bicycles and bicycle subassemblies. It identifies the heirarchical relationship between a parent product and its components.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="BillOfMaterials")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class BillOfMaterials : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new BillOfMaterials object.
        /// </summary>
        /// <param name="billOfMaterialsId">Initial value of the BillOfMaterialsId property.</param>
        /// <param name="startDate">Initial value of the StartDate property.</param>
        /// <param name="bomLevel">Initial value of the BomLevel property.</param>
        /// <param name="perAssemblyQty">Initial value of the PerAssemblyQty property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static BillOfMaterials CreateBillOfMaterials(global::System.Int32 billOfMaterialsId, global::System.DateTime startDate, global::System.Int16 bomLevel, global::System.Decimal perAssemblyQty, global::System.DateTime modifiedDate)
        {
            BillOfMaterials billOfMaterials = new BillOfMaterials();
            billOfMaterials.BillOfMaterialsId = billOfMaterialsId;
            billOfMaterials.StartDate = startDate;
            billOfMaterials.BomLevel = bomLevel;
            billOfMaterials.PerAssemblyQty = perAssemblyQty;
            billOfMaterials.ModifiedDate = modifiedDate;
            return billOfMaterials;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 BillOfMaterialsId
        {
            get
            {
                return _BillOfMaterialsId;
            }
            set
            {
                if (_BillOfMaterialsId != value)
                {
                    OnBillOfMaterialsIdChanging(value);
                    ReportPropertyChanging("BillOfMaterialsId");
                    _BillOfMaterialsId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("BillOfMaterialsId");
                    OnBillOfMaterialsIdChanged();
                }
            }
        }
        private global::System.Int32 _BillOfMaterialsId;
        partial void OnBillOfMaterialsIdChanging(global::System.Int32 value);
        partial void OnBillOfMaterialsIdChanged();
    
        /// <summary>
        /// Date the component started being used in the assembly item.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime StartDate
        {
            get
            {
                return _StartDate;
            }
            set
            {
                OnStartDateChanging(value);
                ReportPropertyChanging("StartDate");
                _StartDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("StartDate");
                OnStartDateChanged();
            }
        }
        private global::System.DateTime _StartDate;
        partial void OnStartDateChanging(global::System.DateTime value);
        partial void OnStartDateChanged();
    
        /// <summary>
        /// Date the component stopped being used in the assembly item.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> EndDate
        {
            get
            {
                return _EndDate;
            }
            set
            {
                OnEndDateChanging(value);
                ReportPropertyChanging("EndDate");
                _EndDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("EndDate");
                OnEndDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _EndDate;
        partial void OnEndDateChanging(Nullable<global::System.DateTime> value);
        partial void OnEndDateChanged();
    
        /// <summary>
        /// Indicates the depth the component is from its parent (AssemblyID).
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 BomLevel
        {
            get
            {
                return _BomLevel;
            }
            set
            {
                OnBomLevelChanging(value);
                ReportPropertyChanging("BomLevel");
                _BomLevel = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("BomLevel");
                OnBomLevelChanged();
            }
        }
        private global::System.Int16 _BomLevel;
        partial void OnBomLevelChanging(global::System.Int16 value);
        partial void OnBomLevelChanged();
    
        /// <summary>
        /// Quantity of the component needed to create the assembly.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal PerAssemblyQty
        {
            get
            {
                return _PerAssemblyQty;
            }
            set
            {
                OnPerAssemblyQtyChanging(value);
                ReportPropertyChanging("PerAssemblyQty");
                _PerAssemblyQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("PerAssemblyQty");
                OnPerAssemblyQtyChanged();
            }
        }
        private global::System.Decimal _PerAssemblyQty;
        partial void OnPerAssemblyQtyChanging(global::System.Decimal value);
        partial void OnPerAssemblyQtyChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "BillOfMaterials_ProductAssemblyId", "Product")]
        public Product ProductAssemblyIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.BillOfMaterials_ProductAssemblyId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.BillOfMaterials_ProductAssemblyId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductAssemblyIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.BillOfMaterials_ProductAssemblyId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.BillOfMaterials_ProductAssemblyId", "Product", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "BillOfMaterials_ComponentId", "Product")]
        public Product ComponentIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.BillOfMaterials_ComponentId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.BillOfMaterials_ComponentId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ComponentIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.BillOfMaterials_ComponentId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.BillOfMaterials_ComponentId", "Product", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "BillOfMaterials_UnitMeasureCode", "UnitMeasure")]
        public UnitMeasure UnitMeasureCodeObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<UnitMeasure>("MyProject4Model.BillOfMaterials_UnitMeasureCode", "UnitMeasure").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<UnitMeasure>("MyProject4Model.BillOfMaterials_UnitMeasureCode", "UnitMeasure").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<UnitMeasure> UnitMeasureCodeObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<UnitMeasure>("MyProject4Model.BillOfMaterials_UnitMeasureCode", "UnitMeasure");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<UnitMeasure>("MyProject4Model.BillOfMaterials_UnitMeasureCode", "UnitMeasure", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Names of each employee, customer contact, and vendor contact.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Contact")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Contact : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Contact object.
        /// </summary>
        /// <param name="contactId">Initial value of the ContactId property.</param>
        /// <param name="nameStyle">Initial value of the NameStyle property.</param>
        /// <param name="firstName">Initial value of the FirstName property.</param>
        /// <param name="lastName">Initial value of the LastName property.</param>
        /// <param name="emailPromotion">Initial value of the EmailPromotion property.</param>
        /// <param name="passwordHash">Initial value of the PasswordHash property.</param>
        /// <param name="passwordSalt">Initial value of the PasswordSalt property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Contact CreateContact(global::System.Int32 contactId, global::System.Boolean nameStyle, global::System.String firstName, global::System.String lastName, global::System.Int32 emailPromotion, global::System.String passwordHash, global::System.String passwordSalt, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            Contact contact = new Contact();
            contact.ContactId = contactId;
            contact.NameStyle = nameStyle;
            contact.FirstName = firstName;
            contact.LastName = lastName;
            contact.EmailPromotion = emailPromotion;
            contact.PasswordHash = passwordHash;
            contact.PasswordSalt = passwordSalt;
            contact.Rowguid = rowguid;
            contact.ModifiedDate = modifiedDate;
            return contact;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ContactId
        {
            get
            {
                return _ContactId;
            }
            set
            {
                if (_ContactId != value)
                {
                    OnContactIdChanging(value);
                    ReportPropertyChanging("ContactId");
                    _ContactId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ContactId");
                    OnContactIdChanged();
                }
            }
        }
        private global::System.Int32 _ContactId;
        partial void OnContactIdChanging(global::System.Int32 value);
        partial void OnContactIdChanged();
    
        /// <summary>
        /// 0 = The data in FirstName and LastName are stored in western style (first name, last name) order.  1 = Eastern style (last name, first name) order.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Boolean NameStyle
        {
            get
            {
                return _NameStyle;
            }
            set
            {
                OnNameStyleChanging(value);
                ReportPropertyChanging("NameStyle");
                _NameStyle = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("NameStyle");
                OnNameStyleChanged();
            }
        }
        private global::System.Boolean _NameStyle;
        partial void OnNameStyleChanging(global::System.Boolean value);
        partial void OnNameStyleChanged();
    
        /// <summary>
        /// A courtesy title. For example, Mr. or Ms.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Title
        {
            get
            {
                return _Title;
            }
            set
            {
                OnTitleChanging(value);
                ReportPropertyChanging("Title");
                _Title = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Title");
                OnTitleChanged();
            }
        }
        private global::System.String _Title;
        partial void OnTitleChanging(global::System.String value);
        partial void OnTitleChanged();
    
        /// <summary>
        /// First name of the person.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String FirstName
        {
            get
            {
                return _FirstName;
            }
            set
            {
                OnFirstNameChanging(value);
                ReportPropertyChanging("FirstName");
                _FirstName = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("FirstName");
                OnFirstNameChanged();
            }
        }
        private global::System.String _FirstName;
        partial void OnFirstNameChanging(global::System.String value);
        partial void OnFirstNameChanged();
    
        /// <summary>
        /// Middle name or middle initial of the person.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String MiddleName
        {
            get
            {
                return _MiddleName;
            }
            set
            {
                OnMiddleNameChanging(value);
                ReportPropertyChanging("MiddleName");
                _MiddleName = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("MiddleName");
                OnMiddleNameChanged();
            }
        }
        private global::System.String _MiddleName;
        partial void OnMiddleNameChanging(global::System.String value);
        partial void OnMiddleNameChanged();
    
        /// <summary>
        /// Last name of the person.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String LastName
        {
            get
            {
                return _LastName;
            }
            set
            {
                OnLastNameChanging(value);
                ReportPropertyChanging("LastName");
                _LastName = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("LastName");
                OnLastNameChanged();
            }
        }
        private global::System.String _LastName;
        partial void OnLastNameChanging(global::System.String value);
        partial void OnLastNameChanged();
    
        /// <summary>
        /// Surname suffix. For example, Sr. or Jr.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Suffix
        {
            get
            {
                return _Suffix;
            }
            set
            {
                OnSuffixChanging(value);
                ReportPropertyChanging("Suffix");
                _Suffix = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Suffix");
                OnSuffixChanged();
            }
        }
        private global::System.String _Suffix;
        partial void OnSuffixChanging(global::System.String value);
        partial void OnSuffixChanged();
    
        /// <summary>
        /// E-mail address for the person.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String EmailAddress
        {
            get
            {
                return _EmailAddress;
            }
            set
            {
                OnEmailAddressChanging(value);
                ReportPropertyChanging("EmailAddress");
                _EmailAddress = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("EmailAddress");
                OnEmailAddressChanged();
            }
        }
        private global::System.String _EmailAddress;
        partial void OnEmailAddressChanging(global::System.String value);
        partial void OnEmailAddressChanged();
    
        /// <summary>
        /// 0 = Contact does not wish to receive e-mail promotions, 1 = Contact does wish to receive e-mail promotions from AdventureWorks, 2 = Contact does wish to receive e-mail promotions from AdventureWorks and selected partners. 
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 EmailPromotion
        {
            get
            {
                return _EmailPromotion;
            }
            set
            {
                OnEmailPromotionChanging(value);
                ReportPropertyChanging("EmailPromotion");
                _EmailPromotion = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("EmailPromotion");
                OnEmailPromotionChanged();
            }
        }
        private global::System.Int32 _EmailPromotion;
        partial void OnEmailPromotionChanging(global::System.Int32 value);
        partial void OnEmailPromotionChanged();
    
        /// <summary>
        /// Phone number associated with the person.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Phone
        {
            get
            {
                return _Phone;
            }
            set
            {
                OnPhoneChanging(value);
                ReportPropertyChanging("Phone");
                _Phone = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Phone");
                OnPhoneChanged();
            }
        }
        private global::System.String _Phone;
        partial void OnPhoneChanging(global::System.String value);
        partial void OnPhoneChanged();
    
        /// <summary>
        /// Password for the e-mail account.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String PasswordHash
        {
            get
            {
                return _PasswordHash;
            }
            set
            {
                OnPasswordHashChanging(value);
                ReportPropertyChanging("PasswordHash");
                _PasswordHash = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("PasswordHash");
                OnPasswordHashChanged();
            }
        }
        private global::System.String _PasswordHash;
        partial void OnPasswordHashChanging(global::System.String value);
        partial void OnPasswordHashChanged();
    
        /// <summary>
        /// Random value concatenated with the password string before the password is hashed.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String PasswordSalt
        {
            get
            {
                return _PasswordSalt;
            }
            set
            {
                OnPasswordSaltChanging(value);
                ReportPropertyChanging("PasswordSalt");
                _PasswordSalt = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("PasswordSalt");
                OnPasswordSaltChanged();
            }
        }
        private global::System.String _PasswordSalt;
        partial void OnPasswordSaltChanging(global::System.String value);
        partial void OnPasswordSaltChanged();
    
        /// <summary>
        /// Additional contact information about the person stored in xml format. 
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String AdditionalContactInfo
        {
            get
            {
                return _AdditionalContactInfo;
            }
            set
            {
                OnAdditionalContactInfoChanging(value);
                ReportPropertyChanging("AdditionalContactInfo");
                _AdditionalContactInfo = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("AdditionalContactInfo");
                OnAdditionalContactInfoChanged();
            }
        }
        private global::System.String _AdditionalContactInfo;
        partial void OnAdditionalContactInfoChanging(global::System.String value);
        partial void OnAdditionalContactInfoChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Cross-reference table mapping customers in the Contact table to their credit card information in the CreditCard table. 
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ContactCreditCard")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ContactCreditCard : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ContactCreditCard object.
        /// </summary>
        /// <param name="contactId">Initial value of the ContactId property.</param>
        /// <param name="creditCardId">Initial value of the CreditCardId property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ContactCreditCard CreateContactCreditCard(global::System.Int32 contactId, global::System.Int32 creditCardId, global::System.DateTime modifiedDate)
        {
            ContactCreditCard contactCreditCard = new ContactCreditCard();
            contactCreditCard.ContactId = contactId;
            contactCreditCard.CreditCardId = creditCardId;
            contactCreditCard.ModifiedDate = modifiedDate;
            return contactCreditCard;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Customer identification number. Foreign key to Contact.ContactID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ContactId
        {
            get
            {
                return _ContactId;
            }
            set
            {
                if (_ContactId != value)
                {
                    OnContactIdChanging(value);
                    ReportPropertyChanging("ContactId");
                    _ContactId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ContactId");
                    OnContactIdChanged();
                }
            }
        }
        private global::System.Int32 _ContactId;
        partial void OnContactIdChanging(global::System.Int32 value);
        partial void OnContactIdChanged();
    
        /// <summary>
        /// Credit card identification number. Foreign key to CreditCard.CreditCardID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 CreditCardId
        {
            get
            {
                return _CreditCardId;
            }
            set
            {
                if (_CreditCardId != value)
                {
                    OnCreditCardIdChanging(value);
                    ReportPropertyChanging("CreditCardId");
                    _CreditCardId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("CreditCardId");
                    OnCreditCardIdChanged();
                }
            }
        }
        private global::System.Int32 _CreditCardId;
        partial void OnCreditCardIdChanging(global::System.Int32 value);
        partial void OnCreditCardIdChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ContactCreditCard_ContactId", "Contact")]
        public Contact ContactIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.ContactCreditCard_ContactId", "Contact").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.ContactCreditCard_ContactId", "Contact").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Contact> ContactIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.ContactCreditCard_ContactId", "Contact");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Contact>("MyProject4Model.ContactCreditCard_ContactId", "Contact", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ContactCreditCard_CreditCardId", "CreditCard")]
        public CreditCard CreditCardIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CreditCard>("MyProject4Model.ContactCreditCard_CreditCardId", "CreditCard").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CreditCard>("MyProject4Model.ContactCreditCard_CreditCardId", "CreditCard").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<CreditCard> CreditCardIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CreditCard>("MyProject4Model.ContactCreditCard_CreditCardId", "CreditCard");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<CreditCard>("MyProject4Model.ContactCreditCard_CreditCardId", "CreditCard", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Lookup table containing the types of contacts stored in Contact.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ContactType")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ContactType : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ContactType object.
        /// </summary>
        /// <param name="contactTypeId">Initial value of the ContactTypeId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ContactType CreateContactType(global::System.Int32 contactTypeId, global::System.String name, global::System.DateTime modifiedDate)
        {
            ContactType contactType = new ContactType();
            contactType.ContactTypeId = contactTypeId;
            contactType.Name = name;
            contactType.ModifiedDate = modifiedDate;
            return contactType;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ContactTypeId
        {
            get
            {
                return _ContactTypeId;
            }
            set
            {
                if (_ContactTypeId != value)
                {
                    OnContactTypeIdChanging(value);
                    ReportPropertyChanging("ContactTypeId");
                    _ContactTypeId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ContactTypeId");
                    OnContactTypeIdChanged();
                }
            }
        }
        private global::System.Int32 _ContactTypeId;
        partial void OnContactTypeIdChanging(global::System.Int32 value);
        partial void OnContactTypeIdChanged();
    
        /// <summary>
        /// Contact type description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Lookup table containing the ISO standard codes for countries and regions.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="CountryRegion")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class CountryRegion : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new CountryRegion object.
        /// </summary>
        /// <param name="countryRegionCode">Initial value of the CountryRegionCode property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static CountryRegion CreateCountryRegion(global::System.String countryRegionCode, global::System.String name, global::System.DateTime modifiedDate)
        {
            CountryRegion countryRegion = new CountryRegion();
            countryRegion.CountryRegionCode = countryRegionCode;
            countryRegion.Name = name;
            countryRegion.ModifiedDate = modifiedDate;
            return countryRegion;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String CountryRegionCode
        {
            get
            {
                return _CountryRegionCode;
            }
            set
            {
                if (_CountryRegionCode != value)
                {
                    OnCountryRegionCodeChanging(value);
                    ReportPropertyChanging("CountryRegionCode");
                    _CountryRegionCode = StructuralObject.SetValidValue(value, false);
                    ReportPropertyChanged("CountryRegionCode");
                    OnCountryRegionCodeChanged();
                }
            }
        }
        private global::System.String _CountryRegionCode;
        partial void OnCountryRegionCodeChanging(global::System.String value);
        partial void OnCountryRegionCodeChanged();
    
        /// <summary>
        /// Country or region name.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Cross-reference table mapping ISO currency codes to a country or region.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="CountryRegionCurrency")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class CountryRegionCurrency : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new CountryRegionCurrency object.
        /// </summary>
        /// <param name="countryRegionCode">Initial value of the CountryRegionCode property.</param>
        /// <param name="currencyCode">Initial value of the CurrencyCode property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static CountryRegionCurrency CreateCountryRegionCurrency(global::System.String countryRegionCode, global::System.String currencyCode, global::System.DateTime modifiedDate)
        {
            CountryRegionCurrency countryRegionCurrency = new CountryRegionCurrency();
            countryRegionCurrency.CountryRegionCode = countryRegionCode;
            countryRegionCurrency.CurrencyCode = currencyCode;
            countryRegionCurrency.ModifiedDate = modifiedDate;
            return countryRegionCurrency;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// ISO code for countries and regions. Foreign key to CountryRegion.CountryRegionCode.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String CountryRegionCode
        {
            get
            {
                return _CountryRegionCode;
            }
            set
            {
                if (_CountryRegionCode != value)
                {
                    OnCountryRegionCodeChanging(value);
                    ReportPropertyChanging("CountryRegionCode");
                    _CountryRegionCode = StructuralObject.SetValidValue(value, false);
                    ReportPropertyChanged("CountryRegionCode");
                    OnCountryRegionCodeChanged();
                }
            }
        }
        private global::System.String _CountryRegionCode;
        partial void OnCountryRegionCodeChanging(global::System.String value);
        partial void OnCountryRegionCodeChanged();
    
        /// <summary>
        /// ISO standard currency code. Foreign key to Currency.CurrencyCode.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String CurrencyCode
        {
            get
            {
                return _CurrencyCode;
            }
            set
            {
                if (_CurrencyCode != value)
                {
                    OnCurrencyCodeChanging(value);
                    ReportPropertyChanging("CurrencyCode");
                    _CurrencyCode = StructuralObject.SetValidValue(value, false);
                    ReportPropertyChanged("CurrencyCode");
                    OnCurrencyCodeChanged();
                }
            }
        }
        private global::System.String _CurrencyCode;
        partial void OnCurrencyCodeChanging(global::System.String value);
        partial void OnCurrencyCodeChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "CountryRegionCurrency_CountryRegionCode", "CountryRegion")]
        public CountryRegion CountryRegionCodeObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CountryRegion>("MyProject4Model.CountryRegionCurrency_CountryRegionCode", "CountryRegion").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CountryRegion>("MyProject4Model.CountryRegionCurrency_CountryRegionCode", "CountryRegion").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<CountryRegion> CountryRegionCodeObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CountryRegion>("MyProject4Model.CountryRegionCurrency_CountryRegionCode", "CountryRegion");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<CountryRegion>("MyProject4Model.CountryRegionCurrency_CountryRegionCode", "CountryRegion", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "CountryRegionCurrency_CurrencyCode", "Currency")]
        public Currency CurrencyCodeObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Currency>("MyProject4Model.CountryRegionCurrency_CurrencyCode", "Currency").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Currency>("MyProject4Model.CountryRegionCurrency_CurrencyCode", "Currency").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Currency> CurrencyCodeObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Currency>("MyProject4Model.CountryRegionCurrency_CurrencyCode", "Currency");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Currency>("MyProject4Model.CountryRegionCurrency_CurrencyCode", "Currency", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Customer credit card information.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="CreditCard")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class CreditCard : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new CreditCard object.
        /// </summary>
        /// <param name="creditCardId">Initial value of the CreditCardId property.</param>
        /// <param name="cardType">Initial value of the CardType property.</param>
        /// <param name="cardNumber">Initial value of the CardNumber property.</param>
        /// <param name="expMonth">Initial value of the ExpMonth property.</param>
        /// <param name="expYear">Initial value of the ExpYear property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static CreditCard CreateCreditCard(global::System.Int32 creditCardId, global::System.String cardType, global::System.String cardNumber, global::System.Byte expMonth, global::System.Int16 expYear, global::System.DateTime modifiedDate)
        {
            CreditCard creditCard = new CreditCard();
            creditCard.CreditCardId = creditCardId;
            creditCard.CardType = cardType;
            creditCard.CardNumber = cardNumber;
            creditCard.ExpMonth = expMonth;
            creditCard.ExpYear = expYear;
            creditCard.ModifiedDate = modifiedDate;
            return creditCard;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 CreditCardId
        {
            get
            {
                return _CreditCardId;
            }
            set
            {
                if (_CreditCardId != value)
                {
                    OnCreditCardIdChanging(value);
                    ReportPropertyChanging("CreditCardId");
                    _CreditCardId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("CreditCardId");
                    OnCreditCardIdChanged();
                }
            }
        }
        private global::System.Int32 _CreditCardId;
        partial void OnCreditCardIdChanging(global::System.Int32 value);
        partial void OnCreditCardIdChanged();
    
        /// <summary>
        /// Credit card name.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String CardType
        {
            get
            {
                return _CardType;
            }
            set
            {
                OnCardTypeChanging(value);
                ReportPropertyChanging("CardType");
                _CardType = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("CardType");
                OnCardTypeChanged();
            }
        }
        private global::System.String _CardType;
        partial void OnCardTypeChanging(global::System.String value);
        partial void OnCardTypeChanged();
    
        /// <summary>
        /// Credit card number.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String CardNumber
        {
            get
            {
                return _CardNumber;
            }
            set
            {
                OnCardNumberChanging(value);
                ReportPropertyChanging("CardNumber");
                _CardNumber = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("CardNumber");
                OnCardNumberChanged();
            }
        }
        private global::System.String _CardNumber;
        partial void OnCardNumberChanging(global::System.String value);
        partial void OnCardNumberChanged();
    
        /// <summary>
        /// Credit card expiration month.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte ExpMonth
        {
            get
            {
                return _ExpMonth;
            }
            set
            {
                OnExpMonthChanging(value);
                ReportPropertyChanging("ExpMonth");
                _ExpMonth = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ExpMonth");
                OnExpMonthChanged();
            }
        }
        private global::System.Byte _ExpMonth;
        partial void OnExpMonthChanging(global::System.Byte value);
        partial void OnExpMonthChanged();
    
        /// <summary>
        /// Credit card expiration year.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 ExpYear
        {
            get
            {
                return _ExpYear;
            }
            set
            {
                OnExpYearChanging(value);
                ReportPropertyChanging("ExpYear");
                _ExpYear = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ExpYear");
                OnExpYearChanged();
            }
        }
        private global::System.Int16 _ExpYear;
        partial void OnExpYearChanging(global::System.Int16 value);
        partial void OnExpYearChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Lookup table containing the languages in which some AdventureWorks data is stored.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Culture")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Culture : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Culture object.
        /// </summary>
        /// <param name="cultureId">Initial value of the CultureId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Culture CreateCulture(global::System.String cultureId, global::System.String name, global::System.DateTime modifiedDate)
        {
            Culture culture = new Culture();
            culture.CultureId = cultureId;
            culture.Name = name;
            culture.ModifiedDate = modifiedDate;
            return culture;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String CultureId
        {
            get
            {
                return _CultureId;
            }
            set
            {
                if (_CultureId != value)
                {
                    OnCultureIdChanging(value);
                    ReportPropertyChanging("CultureId");
                    _CultureId = StructuralObject.SetValidValue(value, false);
                    ReportPropertyChanged("CultureId");
                    OnCultureIdChanged();
                }
            }
        }
        private global::System.String _CultureId;
        partial void OnCultureIdChanging(global::System.String value);
        partial void OnCultureIdChanged();
    
        /// <summary>
        /// Culture description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Lookup table containing standard ISO currencies.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Currency")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Currency : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Currency object.
        /// </summary>
        /// <param name="currencyCode">Initial value of the CurrencyCode property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Currency CreateCurrency(global::System.String currencyCode, global::System.String name, global::System.DateTime modifiedDate)
        {
            Currency currency = new Currency();
            currency.CurrencyCode = currencyCode;
            currency.Name = name;
            currency.ModifiedDate = modifiedDate;
            return currency;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String CurrencyCode
        {
            get
            {
                return _CurrencyCode;
            }
            set
            {
                if (_CurrencyCode != value)
                {
                    OnCurrencyCodeChanging(value);
                    ReportPropertyChanging("CurrencyCode");
                    _CurrencyCode = StructuralObject.SetValidValue(value, false);
                    ReportPropertyChanged("CurrencyCode");
                    OnCurrencyCodeChanged();
                }
            }
        }
        private global::System.String _CurrencyCode;
        partial void OnCurrencyCodeChanging(global::System.String value);
        partial void OnCurrencyCodeChanged();
    
        /// <summary>
        /// Currency name.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Currency exchange rates.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="CurrencyRate")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class CurrencyRate : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new CurrencyRate object.
        /// </summary>
        /// <param name="currencyRateId">Initial value of the CurrencyRateId property.</param>
        /// <param name="currencyRateDate">Initial value of the CurrencyRateDate property.</param>
        /// <param name="averageRate">Initial value of the AverageRate property.</param>
        /// <param name="endOfDayRate">Initial value of the EndOfDayRate property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static CurrencyRate CreateCurrencyRate(global::System.Int32 currencyRateId, global::System.DateTime currencyRateDate, global::System.Decimal averageRate, global::System.Decimal endOfDayRate, global::System.DateTime modifiedDate)
        {
            CurrencyRate currencyRate = new CurrencyRate();
            currencyRate.CurrencyRateId = currencyRateId;
            currencyRate.CurrencyRateDate = currencyRateDate;
            currencyRate.AverageRate = averageRate;
            currencyRate.EndOfDayRate = endOfDayRate;
            currencyRate.ModifiedDate = modifiedDate;
            return currencyRate;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 CurrencyRateId
        {
            get
            {
                return _CurrencyRateId;
            }
            set
            {
                if (_CurrencyRateId != value)
                {
                    OnCurrencyRateIdChanging(value);
                    ReportPropertyChanging("CurrencyRateId");
                    _CurrencyRateId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("CurrencyRateId");
                    OnCurrencyRateIdChanged();
                }
            }
        }
        private global::System.Int32 _CurrencyRateId;
        partial void OnCurrencyRateIdChanging(global::System.Int32 value);
        partial void OnCurrencyRateIdChanged();
    
        /// <summary>
        /// Date and time the exchange rate was obtained.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime CurrencyRateDate
        {
            get
            {
                return _CurrencyRateDate;
            }
            set
            {
                OnCurrencyRateDateChanging(value);
                ReportPropertyChanging("CurrencyRateDate");
                _CurrencyRateDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("CurrencyRateDate");
                OnCurrencyRateDateChanged();
            }
        }
        private global::System.DateTime _CurrencyRateDate;
        partial void OnCurrencyRateDateChanging(global::System.DateTime value);
        partial void OnCurrencyRateDateChanged();
    
        /// <summary>
        /// Average exchange rate for the day.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal AverageRate
        {
            get
            {
                return _AverageRate;
            }
            set
            {
                OnAverageRateChanging(value);
                ReportPropertyChanging("AverageRate");
                _AverageRate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("AverageRate");
                OnAverageRateChanged();
            }
        }
        private global::System.Decimal _AverageRate;
        partial void OnAverageRateChanging(global::System.Decimal value);
        partial void OnAverageRateChanged();
    
        /// <summary>
        /// Final exchange rate for the day.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal EndOfDayRate
        {
            get
            {
                return _EndOfDayRate;
            }
            set
            {
                OnEndOfDayRateChanging(value);
                ReportPropertyChanging("EndOfDayRate");
                _EndOfDayRate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("EndOfDayRate");
                OnEndOfDayRateChanged();
            }
        }
        private global::System.Decimal _EndOfDayRate;
        partial void OnEndOfDayRateChanging(global::System.Decimal value);
        partial void OnEndOfDayRateChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "CurrencyRate_FromCurrencyCode", "Currency")]
        public Currency FromCurrencyCodeObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Currency>("MyProject4Model.CurrencyRate_FromCurrencyCode", "Currency").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Currency>("MyProject4Model.CurrencyRate_FromCurrencyCode", "Currency").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Currency> FromCurrencyCodeObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Currency>("MyProject4Model.CurrencyRate_FromCurrencyCode", "Currency");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Currency>("MyProject4Model.CurrencyRate_FromCurrencyCode", "Currency", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "CurrencyRate_ToCurrencyCode", "Currency")]
        public Currency ToCurrencyCodeObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Currency>("MyProject4Model.CurrencyRate_ToCurrencyCode", "Currency").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Currency>("MyProject4Model.CurrencyRate_ToCurrencyCode", "Currency").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Currency> ToCurrencyCodeObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Currency>("MyProject4Model.CurrencyRate_ToCurrencyCode", "Currency");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Currency>("MyProject4Model.CurrencyRate_ToCurrencyCode", "Currency", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Current customer information. Also see the Individual and Store tables.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Customer")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Customer : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Customer object.
        /// </summary>
        /// <param name="customerId">Initial value of the CustomerId property.</param>
        /// <param name="accountNumber">Initial value of the AccountNumber property.</param>
        /// <param name="customerType">Initial value of the CustomerType property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Customer CreateCustomer(global::System.Int32 customerId, global::System.String accountNumber, global::System.String customerType, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            Customer customer = new Customer();
            customer.CustomerId = customerId;
            customer.AccountNumber = accountNumber;
            customer.CustomerType = customerType;
            customer.Rowguid = rowguid;
            customer.ModifiedDate = modifiedDate;
            return customer;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 CustomerId
        {
            get
            {
                return _CustomerId;
            }
            set
            {
                if (_CustomerId != value)
                {
                    OnCustomerIdChanging(value);
                    ReportPropertyChanging("CustomerId");
                    _CustomerId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("CustomerId");
                    OnCustomerIdChanged();
                }
            }
        }
        private global::System.Int32 _CustomerId;
        partial void OnCustomerIdChanging(global::System.Int32 value);
        partial void OnCustomerIdChanged();
    
        /// <summary>
        /// Unique number identifying the customer assigned by the accounting system.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String AccountNumber
        {
            get
            {
                return _AccountNumber;
            }
            set
            {
                OnAccountNumberChanging(value);
                ReportPropertyChanging("AccountNumber");
                _AccountNumber = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("AccountNumber");
                OnAccountNumberChanged();
            }
        }
        private global::System.String _AccountNumber;
        partial void OnAccountNumberChanging(global::System.String value);
        partial void OnAccountNumberChanged();
    
        /// <summary>
        /// Customer type: I = Individual, S = Store
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String CustomerType
        {
            get
            {
                return _CustomerType;
            }
            set
            {
                OnCustomerTypeChanging(value);
                ReportPropertyChanging("CustomerType");
                _CustomerType = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("CustomerType");
                OnCustomerTypeChanged();
            }
        }
        private global::System.String _CustomerType;
        partial void OnCustomerTypeChanging(global::System.String value);
        partial void OnCustomerTypeChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "Customer_TerritoryId", "SalesTerritory")]
        public SalesTerritory TerritoryIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.Customer_TerritoryId", "SalesTerritory").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.Customer_TerritoryId", "SalesTerritory").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SalesTerritory> TerritoryIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.Customer_TerritoryId", "SalesTerritory");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SalesTerritory>("MyProject4Model.Customer_TerritoryId", "SalesTerritory", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Cross-reference table mapping customers to their address(es).
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="CustomerAddress")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class CustomerAddress : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new CustomerAddress object.
        /// </summary>
        /// <param name="customerId">Initial value of the CustomerId property.</param>
        /// <param name="addressId">Initial value of the AddressId property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static CustomerAddress CreateCustomerAddress(global::System.Int32 customerId, global::System.Int32 addressId, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            CustomerAddress customerAddress = new CustomerAddress();
            customerAddress.CustomerId = customerId;
            customerAddress.AddressId = addressId;
            customerAddress.Rowguid = rowguid;
            customerAddress.ModifiedDate = modifiedDate;
            return customerAddress;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Primary key. Foreign key to Customer.CustomerID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 CustomerId
        {
            get
            {
                return _CustomerId;
            }
            set
            {
                if (_CustomerId != value)
                {
                    OnCustomerIdChanging(value);
                    ReportPropertyChanging("CustomerId");
                    _CustomerId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("CustomerId");
                    OnCustomerIdChanged();
                }
            }
        }
        private global::System.Int32 _CustomerId;
        partial void OnCustomerIdChanging(global::System.Int32 value);
        partial void OnCustomerIdChanged();
    
        /// <summary>
        /// Primary key. Foreign key to Address.AddressID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 AddressId
        {
            get
            {
                return _AddressId;
            }
            set
            {
                if (_AddressId != value)
                {
                    OnAddressIdChanging(value);
                    ReportPropertyChanging("AddressId");
                    _AddressId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("AddressId");
                    OnAddressIdChanged();
                }
            }
        }
        private global::System.Int32 _AddressId;
        partial void OnAddressIdChanging(global::System.Int32 value);
        partial void OnAddressIdChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "CustomerAddress_AddressTypeId", "AddressType")]
        public AddressType AddressTypeIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<AddressType>("MyProject4Model.CustomerAddress_AddressTypeId", "AddressType").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<AddressType>("MyProject4Model.CustomerAddress_AddressTypeId", "AddressType").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<AddressType> AddressTypeIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<AddressType>("MyProject4Model.CustomerAddress_AddressTypeId", "AddressType");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<AddressType>("MyProject4Model.CustomerAddress_AddressTypeId", "AddressType", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "CustomerAddress_CustomerId", "Customer")]
        public Customer CustomerIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("MyProject4Model.CustomerAddress_CustomerId", "Customer").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("MyProject4Model.CustomerAddress_CustomerId", "Customer").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Customer> CustomerIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("MyProject4Model.CustomerAddress_CustomerId", "Customer");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Customer>("MyProject4Model.CustomerAddress_CustomerId", "Customer", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "CustomerAddress_AddressId", "Address")]
        public Address AddressIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.CustomerAddress_AddressId", "Address").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.CustomerAddress_AddressId", "Address").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Address> AddressIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.CustomerAddress_AddressId", "Address");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Address>("MyProject4Model.CustomerAddress_AddressId", "Address", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Audit table tracking all DDL changes made to the AdventureWorks database. Data is captured by the database trigger ddlDatabaseTriggerLog.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="DatabaseLog")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class DatabaseLog : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new DatabaseLog object.
        /// </summary>
        /// <param name="databaseLogId">Initial value of the DatabaseLogId property.</param>
        /// <param name="postTime">Initial value of the PostTime property.</param>
        /// <param name="databaseUser">Initial value of the DatabaseUser property.</param>
        /// <param name="event">Initial value of the Event property.</param>
        /// <param name="tsql">Initial value of the Tsql property.</param>
        /// <param name="xmlEvent">Initial value of the XmlEvent property.</param>
        public static DatabaseLog CreateDatabaseLog(global::System.Int32 databaseLogId, global::System.DateTime postTime, global::System.String databaseUser, global::System.String @event, global::System.String tsql, global::System.String xmlEvent)
        {
            DatabaseLog databaseLog = new DatabaseLog();
            databaseLog.DatabaseLogId = databaseLogId;
            databaseLog.PostTime = postTime;
            databaseLog.DatabaseUser = databaseUser;
            databaseLog.Event = @event;
            databaseLog.Tsql = tsql;
            databaseLog.XmlEvent = xmlEvent;
            return databaseLog;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 DatabaseLogId
        {
            get
            {
                return _DatabaseLogId;
            }
            set
            {
                if (_DatabaseLogId != value)
                {
                    OnDatabaseLogIdChanging(value);
                    ReportPropertyChanging("DatabaseLogId");
                    _DatabaseLogId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("DatabaseLogId");
                    OnDatabaseLogIdChanged();
                }
            }
        }
        private global::System.Int32 _DatabaseLogId;
        partial void OnDatabaseLogIdChanging(global::System.Int32 value);
        partial void OnDatabaseLogIdChanged();
    
        /// <summary>
        /// The date and time the DDL change occurred.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime PostTime
        {
            get
            {
                return _PostTime;
            }
            set
            {
                OnPostTimeChanging(value);
                ReportPropertyChanging("PostTime");
                _PostTime = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("PostTime");
                OnPostTimeChanged();
            }
        }
        private global::System.DateTime _PostTime;
        partial void OnPostTimeChanging(global::System.DateTime value);
        partial void OnPostTimeChanged();
    
        /// <summary>
        /// The user who implemented the DDL change.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String DatabaseUser
        {
            get
            {
                return _DatabaseUser;
            }
            set
            {
                OnDatabaseUserChanging(value);
                ReportPropertyChanging("DatabaseUser");
                _DatabaseUser = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("DatabaseUser");
                OnDatabaseUserChanged();
            }
        }
        private global::System.String _DatabaseUser;
        partial void OnDatabaseUserChanging(global::System.String value);
        partial void OnDatabaseUserChanged();
    
        /// <summary>
        /// The type of DDL statement that was executed.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Event
        {
            get
            {
                return _Event;
            }
            set
            {
                OnEventChanging(value);
                ReportPropertyChanging("Event");
                _Event = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Event");
                OnEventChanged();
            }
        }
        private global::System.String _Event;
        partial void OnEventChanging(global::System.String value);
        partial void OnEventChanged();
    
        /// <summary>
        /// The schema to which the changed object belongs.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Schema
        {
            get
            {
                return _Schema;
            }
            set
            {
                OnSchemaChanging(value);
                ReportPropertyChanging("Schema");
                _Schema = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Schema");
                OnSchemaChanged();
            }
        }
        private global::System.String _Schema;
        partial void OnSchemaChanging(global::System.String value);
        partial void OnSchemaChanged();
    
        /// <summary>
        /// The object that was changed by the DDL statment.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Object
        {
            get
            {
                return _Object;
            }
            set
            {
                OnObjectChanging(value);
                ReportPropertyChanging("Object");
                _Object = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Object");
                OnObjectChanged();
            }
        }
        private global::System.String _Object;
        partial void OnObjectChanging(global::System.String value);
        partial void OnObjectChanged();
    
        /// <summary>
        /// The exact Transact-SQL statement that was executed.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Tsql
        {
            get
            {
                return _Tsql;
            }
            set
            {
                OnTsqlChanging(value);
                ReportPropertyChanging("Tsql");
                _Tsql = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Tsql");
                OnTsqlChanged();
            }
        }
        private global::System.String _Tsql;
        partial void OnTsqlChanging(global::System.String value);
        partial void OnTsqlChanged();
    
        /// <summary>
        /// The raw XML data generated by database trigger.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String XmlEvent
        {
            get
            {
                return _XmlEvent;
            }
            set
            {
                OnXmlEventChanging(value);
                ReportPropertyChanging("XmlEvent");
                _XmlEvent = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("XmlEvent");
                OnXmlEventChanged();
            }
        }
        private global::System.String _XmlEvent;
        partial void OnXmlEventChanging(global::System.String value);
        partial void OnXmlEventChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Lookup table containing the departments within the Adventure Works Cycles company.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Department")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Department : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Department object.
        /// </summary>
        /// <param name="departmentId">Initial value of the DepartmentId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="groupName">Initial value of the GroupName property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Department CreateDepartment(global::System.Int16 departmentId, global::System.String name, global::System.String groupName, global::System.DateTime modifiedDate)
        {
            Department department = new Department();
            department.DepartmentId = departmentId;
            department.Name = name;
            department.GroupName = groupName;
            department.ModifiedDate = modifiedDate;
            return department;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 DepartmentId
        {
            get
            {
                return _DepartmentId;
            }
            set
            {
                if (_DepartmentId != value)
                {
                    OnDepartmentIdChanging(value);
                    ReportPropertyChanging("DepartmentId");
                    _DepartmentId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("DepartmentId");
                    OnDepartmentIdChanged();
                }
            }
        }
        private global::System.Int16 _DepartmentId;
        partial void OnDepartmentIdChanging(global::System.Int16 value);
        partial void OnDepartmentIdChanged();
    
        /// <summary>
        /// Name of the department.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Name of the group to which the department belongs.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String GroupName
        {
            get
            {
                return _GroupName;
            }
            set
            {
                OnGroupNameChanging(value);
                ReportPropertyChanging("GroupName");
                _GroupName = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("GroupName");
                OnGroupNameChanged();
            }
        }
        private global::System.String _GroupName;
        partial void OnGroupNameChanging(global::System.String value);
        partial void OnGroupNameChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Product maintenance documents.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Document")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Document : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Document object.
        /// </summary>
        /// <param name="documentId">Initial value of the DocumentId property.</param>
        /// <param name="title">Initial value of the Title property.</param>
        /// <param name="fileName">Initial value of the FileName property.</param>
        /// <param name="fileExtension">Initial value of the FileExtension property.</param>
        /// <param name="revision">Initial value of the Revision property.</param>
        /// <param name="changeNumber">Initial value of the ChangeNumber property.</param>
        /// <param name="status">Initial value of the Status property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Document CreateDocument(global::System.Int32 documentId, global::System.String title, global::System.String fileName, global::System.String fileExtension, global::System.String revision, global::System.Int32 changeNumber, global::System.Byte status, global::System.DateTime modifiedDate)
        {
            Document document = new Document();
            document.DocumentId = documentId;
            document.Title = title;
            document.FileName = fileName;
            document.FileExtension = fileExtension;
            document.Revision = revision;
            document.ChangeNumber = changeNumber;
            document.Status = status;
            document.ModifiedDate = modifiedDate;
            return document;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 DocumentId
        {
            get
            {
                return _DocumentId;
            }
            set
            {
                if (_DocumentId != value)
                {
                    OnDocumentIdChanging(value);
                    ReportPropertyChanging("DocumentId");
                    _DocumentId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("DocumentId");
                    OnDocumentIdChanged();
                }
            }
        }
        private global::System.Int32 _DocumentId;
        partial void OnDocumentIdChanging(global::System.Int32 value);
        partial void OnDocumentIdChanged();
    
        /// <summary>
        /// Title of the document.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Title
        {
            get
            {
                return _Title;
            }
            set
            {
                OnTitleChanging(value);
                ReportPropertyChanging("Title");
                _Title = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Title");
                OnTitleChanged();
            }
        }
        private global::System.String _Title;
        partial void OnTitleChanging(global::System.String value);
        partial void OnTitleChanged();
    
        /// <summary>
        /// Directory path and file name of the document
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String FileName
        {
            get
            {
                return _FileName;
            }
            set
            {
                OnFileNameChanging(value);
                ReportPropertyChanging("FileName");
                _FileName = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("FileName");
                OnFileNameChanged();
            }
        }
        private global::System.String _FileName;
        partial void OnFileNameChanging(global::System.String value);
        partial void OnFileNameChanged();
    
        /// <summary>
        /// File extension indicating the document type. For example, .doc or .txt.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String FileExtension
        {
            get
            {
                return _FileExtension;
            }
            set
            {
                OnFileExtensionChanging(value);
                ReportPropertyChanging("FileExtension");
                _FileExtension = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("FileExtension");
                OnFileExtensionChanged();
            }
        }
        private global::System.String _FileExtension;
        partial void OnFileExtensionChanging(global::System.String value);
        partial void OnFileExtensionChanged();
    
        /// <summary>
        /// Revision number of the document. 
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Revision
        {
            get
            {
                return _Revision;
            }
            set
            {
                OnRevisionChanging(value);
                ReportPropertyChanging("Revision");
                _Revision = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Revision");
                OnRevisionChanged();
            }
        }
        private global::System.String _Revision;
        partial void OnRevisionChanging(global::System.String value);
        partial void OnRevisionChanged();
    
        /// <summary>
        /// Engineering change approval number.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ChangeNumber
        {
            get
            {
                return _ChangeNumber;
            }
            set
            {
                OnChangeNumberChanging(value);
                ReportPropertyChanging("ChangeNumber");
                _ChangeNumber = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ChangeNumber");
                OnChangeNumberChanged();
            }
        }
        private global::System.Int32 _ChangeNumber;
        partial void OnChangeNumberChanging(global::System.Int32 value);
        partial void OnChangeNumberChanged();
    
        /// <summary>
        /// 1 = Pending approval, 2 = Approved, 3 = Obsolete
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte Status
        {
            get
            {
                return _Status;
            }
            set
            {
                OnStatusChanging(value);
                ReportPropertyChanging("Status");
                _Status = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Status");
                OnStatusChanged();
            }
        }
        private global::System.Byte _Status;
        partial void OnStatusChanging(global::System.Byte value);
        partial void OnStatusChanged();
    
        /// <summary>
        /// Document abstract.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String DocumentSummary
        {
            get
            {
                return _DocumentSummary;
            }
            set
            {
                OnDocumentSummaryChanging(value);
                ReportPropertyChanging("DocumentSummary");
                _DocumentSummary = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("DocumentSummary");
                OnDocumentSummaryChanged();
            }
        }
        private global::System.String _DocumentSummary;
        partial void OnDocumentSummaryChanging(global::System.String value);
        partial void OnDocumentSummaryChanged();
    
        /// <summary>
        /// Complete document.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.Byte[] Document1
        {
            get
            {
                return StructuralObject.GetValidValue(_Document1);
            }
            set
            {
                OnDocument1Changing(value);
                ReportPropertyChanging("Document1");
                _Document1 = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Document1");
                OnDocument1Changed();
            }
        }
        private global::System.Byte[] _Document1;
        partial void OnDocument1Changing(global::System.Byte[] value);
        partial void OnDocument1Changed();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Employee information such as salary, department, and title.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Employee")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Employee : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Employee object.
        /// </summary>
        /// <param name="employeeId">Initial value of the EmployeeId property.</param>
        /// <param name="nationalIdNumber">Initial value of the NationalIdNumber property.</param>
        /// <param name="loginId">Initial value of the LoginId property.</param>
        /// <param name="title">Initial value of the Title property.</param>
        /// <param name="birthDate">Initial value of the BirthDate property.</param>
        /// <param name="maritalStatus">Initial value of the MaritalStatus property.</param>
        /// <param name="gender">Initial value of the Gender property.</param>
        /// <param name="hireDate">Initial value of the HireDate property.</param>
        /// <param name="salariedFlag">Initial value of the SalariedFlag property.</param>
        /// <param name="vacationHours">Initial value of the VacationHours property.</param>
        /// <param name="sickLeaveHours">Initial value of the SickLeaveHours property.</param>
        /// <param name="currentFlag">Initial value of the CurrentFlag property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Employee CreateEmployee(global::System.Int32 employeeId, global::System.String nationalIdNumber, global::System.String loginId, global::System.String title, global::System.DateTime birthDate, global::System.String maritalStatus, global::System.String gender, global::System.DateTime hireDate, global::System.Boolean salariedFlag, global::System.Int16 vacationHours, global::System.Int16 sickLeaveHours, global::System.Boolean currentFlag, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            Employee employee = new Employee();
            employee.EmployeeId = employeeId;
            employee.NationalIdNumber = nationalIdNumber;
            employee.LoginId = loginId;
            employee.Title = title;
            employee.BirthDate = birthDate;
            employee.MaritalStatus = maritalStatus;
            employee.Gender = gender;
            employee.HireDate = hireDate;
            employee.SalariedFlag = salariedFlag;
            employee.VacationHours = vacationHours;
            employee.SickLeaveHours = sickLeaveHours;
            employee.CurrentFlag = currentFlag;
            employee.Rowguid = rowguid;
            employee.ModifiedDate = modifiedDate;
            return employee;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 EmployeeId
        {
            get
            {
                return _EmployeeId;
            }
            set
            {
                if (_EmployeeId != value)
                {
                    OnEmployeeIdChanging(value);
                    ReportPropertyChanging("EmployeeId");
                    _EmployeeId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("EmployeeId");
                    OnEmployeeIdChanged();
                }
            }
        }
        private global::System.Int32 _EmployeeId;
        partial void OnEmployeeIdChanging(global::System.Int32 value);
        partial void OnEmployeeIdChanged();
    
        /// <summary>
        /// Unique national identification number such as a social security number.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String NationalIdNumber
        {
            get
            {
                return _NationalIdNumber;
            }
            set
            {
                OnNationalIdNumberChanging(value);
                ReportPropertyChanging("NationalIdNumber");
                _NationalIdNumber = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("NationalIdNumber");
                OnNationalIdNumberChanged();
            }
        }
        private global::System.String _NationalIdNumber;
        partial void OnNationalIdNumberChanging(global::System.String value);
        partial void OnNationalIdNumberChanged();
    
        /// <summary>
        /// Network login.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String LoginId
        {
            get
            {
                return _LoginId;
            }
            set
            {
                OnLoginIdChanging(value);
                ReportPropertyChanging("LoginId");
                _LoginId = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("LoginId");
                OnLoginIdChanged();
            }
        }
        private global::System.String _LoginId;
        partial void OnLoginIdChanging(global::System.String value);
        partial void OnLoginIdChanged();
    
        /// <summary>
        /// Work title such as Buyer or Sales Representative.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Title
        {
            get
            {
                return _Title;
            }
            set
            {
                OnTitleChanging(value);
                ReportPropertyChanging("Title");
                _Title = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Title");
                OnTitleChanged();
            }
        }
        private global::System.String _Title;
        partial void OnTitleChanging(global::System.String value);
        partial void OnTitleChanged();
    
        /// <summary>
        /// Date of birth.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime BirthDate
        {
            get
            {
                return _BirthDate;
            }
            set
            {
                OnBirthDateChanging(value);
                ReportPropertyChanging("BirthDate");
                _BirthDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("BirthDate");
                OnBirthDateChanged();
            }
        }
        private global::System.DateTime _BirthDate;
        partial void OnBirthDateChanging(global::System.DateTime value);
        partial void OnBirthDateChanged();
    
        /// <summary>
        /// M = Married, S = Single
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String MaritalStatus
        {
            get
            {
                return _MaritalStatus;
            }
            set
            {
                OnMaritalStatusChanging(value);
                ReportPropertyChanging("MaritalStatus");
                _MaritalStatus = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("MaritalStatus");
                OnMaritalStatusChanged();
            }
        }
        private global::System.String _MaritalStatus;
        partial void OnMaritalStatusChanging(global::System.String value);
        partial void OnMaritalStatusChanged();
    
        /// <summary>
        /// M = Male, F = Female
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Gender
        {
            get
            {
                return _Gender;
            }
            set
            {
                OnGenderChanging(value);
                ReportPropertyChanging("Gender");
                _Gender = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Gender");
                OnGenderChanged();
            }
        }
        private global::System.String _Gender;
        partial void OnGenderChanging(global::System.String value);
        partial void OnGenderChanged();
    
        /// <summary>
        /// Employee hired on this date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime HireDate
        {
            get
            {
                return _HireDate;
            }
            set
            {
                OnHireDateChanging(value);
                ReportPropertyChanging("HireDate");
                _HireDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("HireDate");
                OnHireDateChanged();
            }
        }
        private global::System.DateTime _HireDate;
        partial void OnHireDateChanging(global::System.DateTime value);
        partial void OnHireDateChanged();
    
        /// <summary>
        /// Job classification. 0 = Hourly, not exempt from collective bargaining. 1 = Salaried, exempt from collective bargaining.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Boolean SalariedFlag
        {
            get
            {
                return _SalariedFlag;
            }
            set
            {
                OnSalariedFlagChanging(value);
                ReportPropertyChanging("SalariedFlag");
                _SalariedFlag = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SalariedFlag");
                OnSalariedFlagChanged();
            }
        }
        private global::System.Boolean _SalariedFlag;
        partial void OnSalariedFlagChanging(global::System.Boolean value);
        partial void OnSalariedFlagChanged();
    
        /// <summary>
        /// Number of available vacation hours.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 VacationHours
        {
            get
            {
                return _VacationHours;
            }
            set
            {
                OnVacationHoursChanging(value);
                ReportPropertyChanging("VacationHours");
                _VacationHours = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("VacationHours");
                OnVacationHoursChanged();
            }
        }
        private global::System.Int16 _VacationHours;
        partial void OnVacationHoursChanging(global::System.Int16 value);
        partial void OnVacationHoursChanged();
    
        /// <summary>
        /// Number of available sick leave hours.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 SickLeaveHours
        {
            get
            {
                return _SickLeaveHours;
            }
            set
            {
                OnSickLeaveHoursChanging(value);
                ReportPropertyChanging("SickLeaveHours");
                _SickLeaveHours = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SickLeaveHours");
                OnSickLeaveHoursChanged();
            }
        }
        private global::System.Int16 _SickLeaveHours;
        partial void OnSickLeaveHoursChanging(global::System.Int16 value);
        partial void OnSickLeaveHoursChanged();
    
        /// <summary>
        /// 0 = Inactive, 1 = Active
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Boolean CurrentFlag
        {
            get
            {
                return _CurrentFlag;
            }
            set
            {
                OnCurrentFlagChanging(value);
                ReportPropertyChanging("CurrentFlag");
                _CurrentFlag = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("CurrentFlag");
                OnCurrentFlagChanged();
            }
        }
        private global::System.Boolean _CurrentFlag;
        partial void OnCurrentFlagChanging(global::System.Boolean value);
        partial void OnCurrentFlagChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "Employee_ContactId", "Contact")]
        public Contact ContactIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.Employee_ContactId", "Contact").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.Employee_ContactId", "Contact").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Contact> ContactIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.Employee_ContactId", "Contact");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Contact>("MyProject4Model.Employee_ContactId", "Contact", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "Employee_ManagerId", "Employee1")]
        public Employee ManagerIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.Employee_ManagerId", "Employee1").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.Employee_ManagerId", "Employee1").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Employee> ManagerIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.Employee_ManagerId", "Employee1");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Employee>("MyProject4Model.Employee_ManagerId", "Employee1", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Cross-reference table mapping employees to their address(es).
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="EmployeeAddress")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class EmployeeAddress : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new EmployeeAddress object.
        /// </summary>
        /// <param name="employeeId">Initial value of the EmployeeId property.</param>
        /// <param name="addressId">Initial value of the AddressId property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static EmployeeAddress CreateEmployeeAddress(global::System.Int32 employeeId, global::System.Int32 addressId, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            EmployeeAddress employeeAddress = new EmployeeAddress();
            employeeAddress.EmployeeId = employeeId;
            employeeAddress.AddressId = addressId;
            employeeAddress.Rowguid = rowguid;
            employeeAddress.ModifiedDate = modifiedDate;
            return employeeAddress;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Primary key. Foreign key to Employee.EmployeeID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 EmployeeId
        {
            get
            {
                return _EmployeeId;
            }
            set
            {
                if (_EmployeeId != value)
                {
                    OnEmployeeIdChanging(value);
                    ReportPropertyChanging("EmployeeId");
                    _EmployeeId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("EmployeeId");
                    OnEmployeeIdChanged();
                }
            }
        }
        private global::System.Int32 _EmployeeId;
        partial void OnEmployeeIdChanging(global::System.Int32 value);
        partial void OnEmployeeIdChanged();
    
        /// <summary>
        /// Primary key. Foreign key to Address.AddressID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 AddressId
        {
            get
            {
                return _AddressId;
            }
            set
            {
                if (_AddressId != value)
                {
                    OnAddressIdChanging(value);
                    ReportPropertyChanging("AddressId");
                    _AddressId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("AddressId");
                    OnAddressIdChanged();
                }
            }
        }
        private global::System.Int32 _AddressId;
        partial void OnAddressIdChanging(global::System.Int32 value);
        partial void OnAddressIdChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "EmployeeAddress_EmployeeId", "Employee")]
        public Employee EmployeeIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.EmployeeAddress_EmployeeId", "Employee").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.EmployeeAddress_EmployeeId", "Employee").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Employee> EmployeeIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.EmployeeAddress_EmployeeId", "Employee");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Employee>("MyProject4Model.EmployeeAddress_EmployeeId", "Employee", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "EmployeeAddress_AddressId", "Address")]
        public Address AddressIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.EmployeeAddress_AddressId", "Address").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.EmployeeAddress_AddressId", "Address").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Address> AddressIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.EmployeeAddress_AddressId", "Address");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Address>("MyProject4Model.EmployeeAddress_AddressId", "Address", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Employee department transfers.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="EmployeeDepartmentHistory")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class EmployeeDepartmentHistory : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new EmployeeDepartmentHistory object.
        /// </summary>
        /// <param name="employeeId">Initial value of the EmployeeId property.</param>
        /// <param name="startDate">Initial value of the StartDate property.</param>
        /// <param name="departmentId">Initial value of the DepartmentId property.</param>
        /// <param name="shiftId">Initial value of the ShiftId property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static EmployeeDepartmentHistory CreateEmployeeDepartmentHistory(global::System.Int32 employeeId, global::System.DateTime startDate, global::System.Int16 departmentId, global::System.Byte shiftId, global::System.DateTime modifiedDate)
        {
            EmployeeDepartmentHistory employeeDepartmentHistory = new EmployeeDepartmentHistory();
            employeeDepartmentHistory.EmployeeId = employeeId;
            employeeDepartmentHistory.StartDate = startDate;
            employeeDepartmentHistory.DepartmentId = departmentId;
            employeeDepartmentHistory.ShiftId = shiftId;
            employeeDepartmentHistory.ModifiedDate = modifiedDate;
            return employeeDepartmentHistory;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Employee identification number. Foreign key to Employee.EmployeeID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 EmployeeId
        {
            get
            {
                return _EmployeeId;
            }
            set
            {
                if (_EmployeeId != value)
                {
                    OnEmployeeIdChanging(value);
                    ReportPropertyChanging("EmployeeId");
                    _EmployeeId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("EmployeeId");
                    OnEmployeeIdChanged();
                }
            }
        }
        private global::System.Int32 _EmployeeId;
        partial void OnEmployeeIdChanging(global::System.Int32 value);
        partial void OnEmployeeIdChanged();
    
        /// <summary>
        /// Date the employee started work in the department.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime StartDate
        {
            get
            {
                return _StartDate;
            }
            set
            {
                if (_StartDate != value)
                {
                    OnStartDateChanging(value);
                    ReportPropertyChanging("StartDate");
                    _StartDate = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("StartDate");
                    OnStartDateChanged();
                }
            }
        }
        private global::System.DateTime _StartDate;
        partial void OnStartDateChanging(global::System.DateTime value);
        partial void OnStartDateChanged();
    
        /// <summary>
        /// Department in which the employee worked including currently. Foreign key to Department.DepartmentID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 DepartmentId
        {
            get
            {
                return _DepartmentId;
            }
            set
            {
                if (_DepartmentId != value)
                {
                    OnDepartmentIdChanging(value);
                    ReportPropertyChanging("DepartmentId");
                    _DepartmentId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("DepartmentId");
                    OnDepartmentIdChanged();
                }
            }
        }
        private global::System.Int16 _DepartmentId;
        partial void OnDepartmentIdChanging(global::System.Int16 value);
        partial void OnDepartmentIdChanged();
    
        /// <summary>
        /// Identifies which 8-hour shift the employee works. Foreign key to Shift.Shift.ID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte ShiftId
        {
            get
            {
                return _ShiftId;
            }
            set
            {
                if (_ShiftId != value)
                {
                    OnShiftIdChanging(value);
                    ReportPropertyChanging("ShiftId");
                    _ShiftId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ShiftId");
                    OnShiftIdChanged();
                }
            }
        }
        private global::System.Byte _ShiftId;
        partial void OnShiftIdChanging(global::System.Byte value);
        partial void OnShiftIdChanged();
    
        /// <summary>
        /// Date the employee left the department. NULL = Current department.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> EndDate
        {
            get
            {
                return _EndDate;
            }
            set
            {
                OnEndDateChanging(value);
                ReportPropertyChanging("EndDate");
                _EndDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("EndDate");
                OnEndDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _EndDate;
        partial void OnEndDateChanging(Nullable<global::System.DateTime> value);
        partial void OnEndDateChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "EmployeeDepartmentHistory_EmployeeId", "Employee")]
        public Employee EmployeeIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.EmployeeDepartmentHistory_EmployeeId", "Employee").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.EmployeeDepartmentHistory_EmployeeId", "Employee").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Employee> EmployeeIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.EmployeeDepartmentHistory_EmployeeId", "Employee");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Employee>("MyProject4Model.EmployeeDepartmentHistory_EmployeeId", "Employee", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "EmployeeDepartmentHistory_DepartmentId", "Department")]
        public Department DepartmentIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Department>("MyProject4Model.EmployeeDepartmentHistory_DepartmentId", "Department").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Department>("MyProject4Model.EmployeeDepartmentHistory_DepartmentId", "Department").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Department> DepartmentIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Department>("MyProject4Model.EmployeeDepartmentHistory_DepartmentId", "Department");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Department>("MyProject4Model.EmployeeDepartmentHistory_DepartmentId", "Department", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "EmployeeDepartmentHistory_ShiftId", "Shift")]
        public Shift ShiftIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Shift>("MyProject4Model.EmployeeDepartmentHistory_ShiftId", "Shift").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Shift>("MyProject4Model.EmployeeDepartmentHistory_ShiftId", "Shift").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Shift> ShiftIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Shift>("MyProject4Model.EmployeeDepartmentHistory_ShiftId", "Shift");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Shift>("MyProject4Model.EmployeeDepartmentHistory_ShiftId", "Shift", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Employee pay history.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="EmployeePayHistory")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class EmployeePayHistory : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new EmployeePayHistory object.
        /// </summary>
        /// <param name="employeeId">Initial value of the EmployeeId property.</param>
        /// <param name="rateChangeDate">Initial value of the RateChangeDate property.</param>
        /// <param name="rate">Initial value of the Rate property.</param>
        /// <param name="payFrequency">Initial value of the PayFrequency property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static EmployeePayHistory CreateEmployeePayHistory(global::System.Int32 employeeId, global::System.DateTime rateChangeDate, global::System.Decimal rate, global::System.Byte payFrequency, global::System.DateTime modifiedDate)
        {
            EmployeePayHistory employeePayHistory = new EmployeePayHistory();
            employeePayHistory.EmployeeId = employeeId;
            employeePayHistory.RateChangeDate = rateChangeDate;
            employeePayHistory.Rate = rate;
            employeePayHistory.PayFrequency = payFrequency;
            employeePayHistory.ModifiedDate = modifiedDate;
            return employeePayHistory;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Employee identification number. Foreign key to Employee.EmployeeID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 EmployeeId
        {
            get
            {
                return _EmployeeId;
            }
            set
            {
                if (_EmployeeId != value)
                {
                    OnEmployeeIdChanging(value);
                    ReportPropertyChanging("EmployeeId");
                    _EmployeeId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("EmployeeId");
                    OnEmployeeIdChanged();
                }
            }
        }
        private global::System.Int32 _EmployeeId;
        partial void OnEmployeeIdChanging(global::System.Int32 value);
        partial void OnEmployeeIdChanged();
    
        /// <summary>
        /// Date the change in pay is effective
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime RateChangeDate
        {
            get
            {
                return _RateChangeDate;
            }
            set
            {
                if (_RateChangeDate != value)
                {
                    OnRateChangeDateChanging(value);
                    ReportPropertyChanging("RateChangeDate");
                    _RateChangeDate = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("RateChangeDate");
                    OnRateChangeDateChanged();
                }
            }
        }
        private global::System.DateTime _RateChangeDate;
        partial void OnRateChangeDateChanging(global::System.DateTime value);
        partial void OnRateChangeDateChanged();
    
        /// <summary>
        /// Salary hourly rate.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal Rate
        {
            get
            {
                return _Rate;
            }
            set
            {
                OnRateChanging(value);
                ReportPropertyChanging("Rate");
                _Rate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rate");
                OnRateChanged();
            }
        }
        private global::System.Decimal _Rate;
        partial void OnRateChanging(global::System.Decimal value);
        partial void OnRateChanged();
    
        /// <summary>
        /// 1 = Salary received monthly, 2 = Salary received biweekly
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte PayFrequency
        {
            get
            {
                return _PayFrequency;
            }
            set
            {
                OnPayFrequencyChanging(value);
                ReportPropertyChanging("PayFrequency");
                _PayFrequency = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("PayFrequency");
                OnPayFrequencyChanged();
            }
        }
        private global::System.Byte _PayFrequency;
        partial void OnPayFrequencyChanging(global::System.Byte value);
        partial void OnPayFrequencyChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "EmployeePayHistory_EmployeeId", "Employee")]
        public Employee EmployeeIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.EmployeePayHistory_EmployeeId", "Employee").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.EmployeePayHistory_EmployeeId", "Employee").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Employee> EmployeeIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.EmployeePayHistory_EmployeeId", "Employee");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Employee>("MyProject4Model.EmployeePayHistory_EmployeeId", "Employee", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Audit table tracking errors in the the AdventureWorks database that are caught by the CATCH block of a TRY...CATCH construct. Data is inserted by stored procedure dbo.uspLogError when it is executed from inside the CATCH block of a TRY...CATCH construct.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ErrorLog")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ErrorLog : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ErrorLog object.
        /// </summary>
        /// <param name="errorLogId">Initial value of the ErrorLogId property.</param>
        /// <param name="errorTime">Initial value of the ErrorTime property.</param>
        /// <param name="userName">Initial value of the UserName property.</param>
        /// <param name="errorNumber">Initial value of the ErrorNumber property.</param>
        /// <param name="errorMessage">Initial value of the ErrorMessage property.</param>
        public static ErrorLog CreateErrorLog(global::System.Int32 errorLogId, global::System.DateTime errorTime, global::System.String userName, global::System.Int32 errorNumber, global::System.String errorMessage)
        {
            ErrorLog errorLog = new ErrorLog();
            errorLog.ErrorLogId = errorLogId;
            errorLog.ErrorTime = errorTime;
            errorLog.UserName = userName;
            errorLog.ErrorNumber = errorNumber;
            errorLog.ErrorMessage = errorMessage;
            return errorLog;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ErrorLogId
        {
            get
            {
                return _ErrorLogId;
            }
            set
            {
                if (_ErrorLogId != value)
                {
                    OnErrorLogIdChanging(value);
                    ReportPropertyChanging("ErrorLogId");
                    _ErrorLogId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ErrorLogId");
                    OnErrorLogIdChanged();
                }
            }
        }
        private global::System.Int32 _ErrorLogId;
        partial void OnErrorLogIdChanging(global::System.Int32 value);
        partial void OnErrorLogIdChanged();
    
        /// <summary>
        /// The date and time at which the error occurred.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ErrorTime
        {
            get
            {
                return _ErrorTime;
            }
            set
            {
                OnErrorTimeChanging(value);
                ReportPropertyChanging("ErrorTime");
                _ErrorTime = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ErrorTime");
                OnErrorTimeChanged();
            }
        }
        private global::System.DateTime _ErrorTime;
        partial void OnErrorTimeChanging(global::System.DateTime value);
        partial void OnErrorTimeChanged();
    
        /// <summary>
        /// The user who executed the batch in which the error occurred.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String UserName
        {
            get
            {
                return _UserName;
            }
            set
            {
                OnUserNameChanging(value);
                ReportPropertyChanging("UserName");
                _UserName = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("UserName");
                OnUserNameChanged();
            }
        }
        private global::System.String _UserName;
        partial void OnUserNameChanging(global::System.String value);
        partial void OnUserNameChanged();
    
        /// <summary>
        /// The error number of the error that occurred.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ErrorNumber
        {
            get
            {
                return _ErrorNumber;
            }
            set
            {
                OnErrorNumberChanging(value);
                ReportPropertyChanging("ErrorNumber");
                _ErrorNumber = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ErrorNumber");
                OnErrorNumberChanged();
            }
        }
        private global::System.Int32 _ErrorNumber;
        partial void OnErrorNumberChanging(global::System.Int32 value);
        partial void OnErrorNumberChanged();
    
        /// <summary>
        /// The severity of the error that occurred.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.Int32> ErrorSeverity
        {
            get
            {
                return _ErrorSeverity;
            }
            set
            {
                OnErrorSeverityChanging(value);
                ReportPropertyChanging("ErrorSeverity");
                _ErrorSeverity = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ErrorSeverity");
                OnErrorSeverityChanged();
            }
        }
        private Nullable<global::System.Int32> _ErrorSeverity;
        partial void OnErrorSeverityChanging(Nullable<global::System.Int32> value);
        partial void OnErrorSeverityChanged();
    
        /// <summary>
        /// The state number of the error that occurred.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.Int32> ErrorState
        {
            get
            {
                return _ErrorState;
            }
            set
            {
                OnErrorStateChanging(value);
                ReportPropertyChanging("ErrorState");
                _ErrorState = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ErrorState");
                OnErrorStateChanged();
            }
        }
        private Nullable<global::System.Int32> _ErrorState;
        partial void OnErrorStateChanging(Nullable<global::System.Int32> value);
        partial void OnErrorStateChanged();
    
        /// <summary>
        /// The name of the stored procedure or trigger where the error occurred.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String ErrorProcedure
        {
            get
            {
                return _ErrorProcedure;
            }
            set
            {
                OnErrorProcedureChanging(value);
                ReportPropertyChanging("ErrorProcedure");
                _ErrorProcedure = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("ErrorProcedure");
                OnErrorProcedureChanged();
            }
        }
        private global::System.String _ErrorProcedure;
        partial void OnErrorProcedureChanging(global::System.String value);
        partial void OnErrorProcedureChanged();
    
        /// <summary>
        /// The line number at which the error occurred.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.Int32> ErrorLine
        {
            get
            {
                return _ErrorLine;
            }
            set
            {
                OnErrorLineChanging(value);
                ReportPropertyChanging("ErrorLine");
                _ErrorLine = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ErrorLine");
                OnErrorLineChanged();
            }
        }
        private Nullable<global::System.Int32> _ErrorLine;
        partial void OnErrorLineChanging(Nullable<global::System.Int32> value);
        partial void OnErrorLineChanged();
    
        /// <summary>
        /// The message text of the error that occurred.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String ErrorMessage
        {
            get
            {
                return _ErrorMessage;
            }
            set
            {
                OnErrorMessageChanging(value);
                ReportPropertyChanging("ErrorMessage");
                _ErrorMessage = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("ErrorMessage");
                OnErrorMessageChanged();
            }
        }
        private global::System.String _ErrorMessage;
        partial void OnErrorMessageChanging(global::System.String value);
        partial void OnErrorMessageChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Bicycle assembly diagrams.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Illustration")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Illustration : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Illustration object.
        /// </summary>
        /// <param name="illustrationId">Initial value of the IllustrationId property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Illustration CreateIllustration(global::System.Int32 illustrationId, global::System.DateTime modifiedDate)
        {
            Illustration illustration = new Illustration();
            illustration.IllustrationId = illustrationId;
            illustration.ModifiedDate = modifiedDate;
            return illustration;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 IllustrationId
        {
            get
            {
                return _IllustrationId;
            }
            set
            {
                if (_IllustrationId != value)
                {
                    OnIllustrationIdChanging(value);
                    ReportPropertyChanging("IllustrationId");
                    _IllustrationId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("IllustrationId");
                    OnIllustrationIdChanged();
                }
            }
        }
        private global::System.Int32 _IllustrationId;
        partial void OnIllustrationIdChanging(global::System.Int32 value);
        partial void OnIllustrationIdChanged();
    
        /// <summary>
        /// Illustrations used in manufacturing instructions. Stored as XML.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Diagram
        {
            get
            {
                return _Diagram;
            }
            set
            {
                OnDiagramChanging(value);
                ReportPropertyChanging("Diagram");
                _Diagram = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Diagram");
                OnDiagramChanged();
            }
        }
        private global::System.String _Diagram;
        partial void OnDiagramChanging(global::System.String value);
        partial void OnDiagramChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Demographic data about customers that purchase Adventure Works products online.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Individual")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Individual : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Individual object.
        /// </summary>
        /// <param name="customerId">Initial value of the CustomerId property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Individual CreateIndividual(global::System.Int32 customerId, global::System.DateTime modifiedDate)
        {
            Individual individual = new Individual();
            individual.CustomerId = customerId;
            individual.ModifiedDate = modifiedDate;
            return individual;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 CustomerId
        {
            get
            {
                return _CustomerId;
            }
            set
            {
                if (_CustomerId != value)
                {
                    OnCustomerIdChanging(value);
                    ReportPropertyChanging("CustomerId");
                    _CustomerId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("CustomerId");
                    OnCustomerIdChanged();
                }
            }
        }
        private global::System.Int32 _CustomerId;
        partial void OnCustomerIdChanging(global::System.Int32 value);
        partial void OnCustomerIdChanged();
    
        /// <summary>
        /// Personal information such as hobbies, and income collected from online shoppers. Used for sales analysis.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Demographics
        {
            get
            {
                return _Demographics;
            }
            set
            {
                OnDemographicsChanging(value);
                ReportPropertyChanging("Demographics");
                _Demographics = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Demographics");
                OnDemographicsChanged();
            }
        }
        private global::System.String _Demographics;
        partial void OnDemographicsChanging(global::System.String value);
        partial void OnDemographicsChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "Individual_CustomerId", "Customer")]
        public Customer CustomerIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("MyProject4Model.Individual_CustomerId", "Customer").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("MyProject4Model.Individual_CustomerId", "Customer").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Customer> CustomerIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("MyProject4Model.Individual_CustomerId", "Customer");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Customer>("MyProject4Model.Individual_CustomerId", "Customer", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "Individual_ContactId", "Contact")]
        public Contact ContactIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.Individual_ContactId", "Contact").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.Individual_ContactId", "Contact").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Contact> ContactIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.Individual_ContactId", "Contact");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Contact>("MyProject4Model.Individual_ContactId", "Contact", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Résumés submitted to Human Resources by job applicants.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="JobCandidate")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class JobCandidate : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new JobCandidate object.
        /// </summary>
        /// <param name="jobCandidateId">Initial value of the JobCandidateId property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static JobCandidate CreateJobCandidate(global::System.Int32 jobCandidateId, global::System.DateTime modifiedDate)
        {
            JobCandidate jobCandidate = new JobCandidate();
            jobCandidate.JobCandidateId = jobCandidateId;
            jobCandidate.ModifiedDate = modifiedDate;
            return jobCandidate;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 JobCandidateId
        {
            get
            {
                return _JobCandidateId;
            }
            set
            {
                if (_JobCandidateId != value)
                {
                    OnJobCandidateIdChanging(value);
                    ReportPropertyChanging("JobCandidateId");
                    _JobCandidateId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("JobCandidateId");
                    OnJobCandidateIdChanged();
                }
            }
        }
        private global::System.Int32 _JobCandidateId;
        partial void OnJobCandidateIdChanging(global::System.Int32 value);
        partial void OnJobCandidateIdChanged();
    
        /// <summary>
        /// Résumé in XML format.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Resume
        {
            get
            {
                return _Resume;
            }
            set
            {
                OnResumeChanging(value);
                ReportPropertyChanging("Resume");
                _Resume = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Resume");
                OnResumeChanged();
            }
        }
        private global::System.String _Resume;
        partial void OnResumeChanging(global::System.String value);
        partial void OnResumeChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "JobCandidate_EmployeeId", "Employee")]
        public Employee EmployeeIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.JobCandidate_EmployeeId", "Employee").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.JobCandidate_EmployeeId", "Employee").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Employee> EmployeeIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.JobCandidate_EmployeeId", "Employee");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Employee>("MyProject4Model.JobCandidate_EmployeeId", "Employee", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Product inventory and manufacturing locations.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Location")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Location : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Location object.
        /// </summary>
        /// <param name="locationId">Initial value of the LocationId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="costRate">Initial value of the CostRate property.</param>
        /// <param name="availability">Initial value of the Availability property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Location CreateLocation(global::System.Int16 locationId, global::System.String name, global::System.Decimal costRate, global::System.Decimal availability, global::System.DateTime modifiedDate)
        {
            Location location = new Location();
            location.LocationId = locationId;
            location.Name = name;
            location.CostRate = costRate;
            location.Availability = availability;
            location.ModifiedDate = modifiedDate;
            return location;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 LocationId
        {
            get
            {
                return _LocationId;
            }
            set
            {
                if (_LocationId != value)
                {
                    OnLocationIdChanging(value);
                    ReportPropertyChanging("LocationId");
                    _LocationId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("LocationId");
                    OnLocationIdChanged();
                }
            }
        }
        private global::System.Int16 _LocationId;
        partial void OnLocationIdChanging(global::System.Int16 value);
        partial void OnLocationIdChanged();
    
        /// <summary>
        /// Location description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Standard hourly cost of the manufacturing location.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal CostRate
        {
            get
            {
                return _CostRate;
            }
            set
            {
                OnCostRateChanging(value);
                ReportPropertyChanging("CostRate");
                _CostRate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("CostRate");
                OnCostRateChanged();
            }
        }
        private global::System.Decimal _CostRate;
        partial void OnCostRateChanging(global::System.Decimal value);
        partial void OnCostRateChanged();
    
        /// <summary>
        /// Work capacity (in hours) of the manufacturing location.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal Availability
        {
            get
            {
                return _Availability;
            }
            set
            {
                OnAvailabilityChanging(value);
                ReportPropertyChanging("Availability");
                _Availability = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Availability");
                OnAvailabilityChanged();
            }
        }
        private global::System.Decimal _Availability;
        partial void OnAvailabilityChanging(global::System.Decimal value);
        partial void OnAvailabilityChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Products sold or used in the manfacturing of sold products.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Product")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Product : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Product object.
        /// </summary>
        /// <param name="productId">Initial value of the ProductId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="productNumber">Initial value of the ProductNumber property.</param>
        /// <param name="makeFlag">Initial value of the MakeFlag property.</param>
        /// <param name="finishedGoodsFlag">Initial value of the FinishedGoodsFlag property.</param>
        /// <param name="safetyStockLevel">Initial value of the SafetyStockLevel property.</param>
        /// <param name="reorderPoint">Initial value of the ReorderPoint property.</param>
        /// <param name="standardCost">Initial value of the StandardCost property.</param>
        /// <param name="listPrice">Initial value of the ListPrice property.</param>
        /// <param name="daysToManufacture">Initial value of the DaysToManufacture property.</param>
        /// <param name="sellStartDate">Initial value of the SellStartDate property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Product CreateProduct(global::System.Int32 productId, global::System.String name, global::System.String productNumber, global::System.Boolean makeFlag, global::System.Boolean finishedGoodsFlag, global::System.Int16 safetyStockLevel, global::System.Int16 reorderPoint, global::System.Decimal standardCost, global::System.Decimal listPrice, global::System.Int32 daysToManufacture, global::System.DateTime sellStartDate, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            Product product = new Product();
            product.ProductId = productId;
            product.Name = name;
            product.ProductNumber = productNumber;
            product.MakeFlag = makeFlag;
            product.FinishedGoodsFlag = finishedGoodsFlag;
            product.SafetyStockLevel = safetyStockLevel;
            product.ReorderPoint = reorderPoint;
            product.StandardCost = standardCost;
            product.ListPrice = listPrice;
            product.DaysToManufacture = daysToManufacture;
            product.SellStartDate = sellStartDate;
            product.Rowguid = rowguid;
            product.ModifiedDate = modifiedDate;
            return product;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductId
        {
            get
            {
                return _ProductId;
            }
            set
            {
                if (_ProductId != value)
                {
                    OnProductIdChanging(value);
                    ReportPropertyChanging("ProductId");
                    _ProductId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductId");
                    OnProductIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductId;
        partial void OnProductIdChanging(global::System.Int32 value);
        partial void OnProductIdChanged();
    
        /// <summary>
        /// Name of the product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Unique product identification number.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String ProductNumber
        {
            get
            {
                return _ProductNumber;
            }
            set
            {
                OnProductNumberChanging(value);
                ReportPropertyChanging("ProductNumber");
                _ProductNumber = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("ProductNumber");
                OnProductNumberChanged();
            }
        }
        private global::System.String _ProductNumber;
        partial void OnProductNumberChanging(global::System.String value);
        partial void OnProductNumberChanged();
    
        /// <summary>
        /// 0 = Product is purchased, 1 = Product is manufactured in-house.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Boolean MakeFlag
        {
            get
            {
                return _MakeFlag;
            }
            set
            {
                OnMakeFlagChanging(value);
                ReportPropertyChanging("MakeFlag");
                _MakeFlag = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("MakeFlag");
                OnMakeFlagChanged();
            }
        }
        private global::System.Boolean _MakeFlag;
        partial void OnMakeFlagChanging(global::System.Boolean value);
        partial void OnMakeFlagChanged();
    
        /// <summary>
        /// 0 = Product is not a salable item. 1 = Product is salable.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Boolean FinishedGoodsFlag
        {
            get
            {
                return _FinishedGoodsFlag;
            }
            set
            {
                OnFinishedGoodsFlagChanging(value);
                ReportPropertyChanging("FinishedGoodsFlag");
                _FinishedGoodsFlag = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("FinishedGoodsFlag");
                OnFinishedGoodsFlagChanged();
            }
        }
        private global::System.Boolean _FinishedGoodsFlag;
        partial void OnFinishedGoodsFlagChanging(global::System.Boolean value);
        partial void OnFinishedGoodsFlagChanged();
    
        /// <summary>
        /// Product color.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Color
        {
            get
            {
                return _Color;
            }
            set
            {
                OnColorChanging(value);
                ReportPropertyChanging("Color");
                _Color = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Color");
                OnColorChanged();
            }
        }
        private global::System.String _Color;
        partial void OnColorChanging(global::System.String value);
        partial void OnColorChanged();
    
        /// <summary>
        /// Minimum inventory quantity. 
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 SafetyStockLevel
        {
            get
            {
                return _SafetyStockLevel;
            }
            set
            {
                OnSafetyStockLevelChanging(value);
                ReportPropertyChanging("SafetyStockLevel");
                _SafetyStockLevel = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SafetyStockLevel");
                OnSafetyStockLevelChanged();
            }
        }
        private global::System.Int16 _SafetyStockLevel;
        partial void OnSafetyStockLevelChanging(global::System.Int16 value);
        partial void OnSafetyStockLevelChanged();
    
        /// <summary>
        /// Inventory level that triggers a purchase order or work order. 
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 ReorderPoint
        {
            get
            {
                return _ReorderPoint;
            }
            set
            {
                OnReorderPointChanging(value);
                ReportPropertyChanging("ReorderPoint");
                _ReorderPoint = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ReorderPoint");
                OnReorderPointChanged();
            }
        }
        private global::System.Int16 _ReorderPoint;
        partial void OnReorderPointChanging(global::System.Int16 value);
        partial void OnReorderPointChanged();
    
        /// <summary>
        /// Standard cost of the product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal StandardCost
        {
            get
            {
                return _StandardCost;
            }
            set
            {
                OnStandardCostChanging(value);
                ReportPropertyChanging("StandardCost");
                _StandardCost = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("StandardCost");
                OnStandardCostChanged();
            }
        }
        private global::System.Decimal _StandardCost;
        partial void OnStandardCostChanging(global::System.Decimal value);
        partial void OnStandardCostChanged();
    
        /// <summary>
        /// Selling price.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal ListPrice
        {
            get
            {
                return _ListPrice;
            }
            set
            {
                OnListPriceChanging(value);
                ReportPropertyChanging("ListPrice");
                _ListPrice = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ListPrice");
                OnListPriceChanged();
            }
        }
        private global::System.Decimal _ListPrice;
        partial void OnListPriceChanging(global::System.Decimal value);
        partial void OnListPriceChanged();
    
        /// <summary>
        /// Product size.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Size
        {
            get
            {
                return _Size;
            }
            set
            {
                OnSizeChanging(value);
                ReportPropertyChanging("Size");
                _Size = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Size");
                OnSizeChanged();
            }
        }
        private global::System.String _Size;
        partial void OnSizeChanging(global::System.String value);
        partial void OnSizeChanged();
    
        /// <summary>
        /// Product weight.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.Decimal> Weight
        {
            get
            {
                return _Weight;
            }
            set
            {
                OnWeightChanging(value);
                ReportPropertyChanging("Weight");
                _Weight = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Weight");
                OnWeightChanged();
            }
        }
        private Nullable<global::System.Decimal> _Weight;
        partial void OnWeightChanging(Nullable<global::System.Decimal> value);
        partial void OnWeightChanged();
    
        /// <summary>
        /// Number of days required to manufacture the product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 DaysToManufacture
        {
            get
            {
                return _DaysToManufacture;
            }
            set
            {
                OnDaysToManufactureChanging(value);
                ReportPropertyChanging("DaysToManufacture");
                _DaysToManufacture = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("DaysToManufacture");
                OnDaysToManufactureChanged();
            }
        }
        private global::System.Int32 _DaysToManufacture;
        partial void OnDaysToManufactureChanging(global::System.Int32 value);
        partial void OnDaysToManufactureChanged();
    
        /// <summary>
        /// R = Road, M = Mountain, T = Touring, S = Standard
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String ProductLine
        {
            get
            {
                return _ProductLine;
            }
            set
            {
                OnProductLineChanging(value);
                ReportPropertyChanging("ProductLine");
                _ProductLine = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("ProductLine");
                OnProductLineChanged();
            }
        }
        private global::System.String _ProductLine;
        partial void OnProductLineChanging(global::System.String value);
        partial void OnProductLineChanged();
    
        /// <summary>
        /// H = High, M = Medium, L = Low
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Class
        {
            get
            {
                return _Class;
            }
            set
            {
                OnClassChanging(value);
                ReportPropertyChanging("Class");
                _Class = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Class");
                OnClassChanged();
            }
        }
        private global::System.String _Class;
        partial void OnClassChanging(global::System.String value);
        partial void OnClassChanged();
    
        /// <summary>
        /// W = Womens, M = Mens, U = Universal
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Style
        {
            get
            {
                return _Style;
            }
            set
            {
                OnStyleChanging(value);
                ReportPropertyChanging("Style");
                _Style = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Style");
                OnStyleChanged();
            }
        }
        private global::System.String _Style;
        partial void OnStyleChanging(global::System.String value);
        partial void OnStyleChanged();
    
        /// <summary>
        /// Date the product was available for sale.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime SellStartDate
        {
            get
            {
                return _SellStartDate;
            }
            set
            {
                OnSellStartDateChanging(value);
                ReportPropertyChanging("SellStartDate");
                _SellStartDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SellStartDate");
                OnSellStartDateChanged();
            }
        }
        private global::System.DateTime _SellStartDate;
        partial void OnSellStartDateChanging(global::System.DateTime value);
        partial void OnSellStartDateChanged();
    
        /// <summary>
        /// Date the product was no longer available for sale.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> SellEndDate
        {
            get
            {
                return _SellEndDate;
            }
            set
            {
                OnSellEndDateChanging(value);
                ReportPropertyChanging("SellEndDate");
                _SellEndDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SellEndDate");
                OnSellEndDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _SellEndDate;
        partial void OnSellEndDateChanging(Nullable<global::System.DateTime> value);
        partial void OnSellEndDateChanged();
    
        /// <summary>
        /// Date the product was discontinued.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> DiscontinuedDate
        {
            get
            {
                return _DiscontinuedDate;
            }
            set
            {
                OnDiscontinuedDateChanging(value);
                ReportPropertyChanging("DiscontinuedDate");
                _DiscontinuedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("DiscontinuedDate");
                OnDiscontinuedDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _DiscontinuedDate;
        partial void OnDiscontinuedDateChanging(Nullable<global::System.DateTime> value);
        partial void OnDiscontinuedDateChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "Product_SizeUnitMeasureCode", "UnitMeasure")]
        public UnitMeasure SizeUnitMeasureCodeObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<UnitMeasure>("MyProject4Model.Product_SizeUnitMeasureCode", "UnitMeasure").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<UnitMeasure>("MyProject4Model.Product_SizeUnitMeasureCode", "UnitMeasure").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<UnitMeasure> SizeUnitMeasureCodeObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<UnitMeasure>("MyProject4Model.Product_SizeUnitMeasureCode", "UnitMeasure");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<UnitMeasure>("MyProject4Model.Product_SizeUnitMeasureCode", "UnitMeasure", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "Product_WeightUnitMeasureCode", "UnitMeasure")]
        public UnitMeasure WeightUnitMeasureCodeObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<UnitMeasure>("MyProject4Model.Product_WeightUnitMeasureCode", "UnitMeasure").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<UnitMeasure>("MyProject4Model.Product_WeightUnitMeasureCode", "UnitMeasure").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<UnitMeasure> WeightUnitMeasureCodeObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<UnitMeasure>("MyProject4Model.Product_WeightUnitMeasureCode", "UnitMeasure");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<UnitMeasure>("MyProject4Model.Product_WeightUnitMeasureCode", "UnitMeasure", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "Product_ProductSubcategoryId", "ProductSubcategory")]
        public ProductSubcategory ProductSubcategoryIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductSubcategory>("MyProject4Model.Product_ProductSubcategoryId", "ProductSubcategory").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductSubcategory>("MyProject4Model.Product_ProductSubcategoryId", "ProductSubcategory").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<ProductSubcategory> ProductSubcategoryIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductSubcategory>("MyProject4Model.Product_ProductSubcategoryId", "ProductSubcategory");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<ProductSubcategory>("MyProject4Model.Product_ProductSubcategoryId", "ProductSubcategory", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "Product_ProductModelId", "ProductModel")]
        public ProductModel ProductModelIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductModel>("MyProject4Model.Product_ProductModelId", "ProductModel").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductModel>("MyProject4Model.Product_ProductModelId", "ProductModel").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<ProductModel> ProductModelIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductModel>("MyProject4Model.Product_ProductModelId", "ProductModel");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<ProductModel>("MyProject4Model.Product_ProductModelId", "ProductModel", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// High-level product categorization.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductCategory")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductCategory : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductCategory object.
        /// </summary>
        /// <param name="productCategoryId">Initial value of the ProductCategoryId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductCategory CreateProductCategory(global::System.Int32 productCategoryId, global::System.String name, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            ProductCategory productCategory = new ProductCategory();
            productCategory.ProductCategoryId = productCategoryId;
            productCategory.Name = name;
            productCategory.Rowguid = rowguid;
            productCategory.ModifiedDate = modifiedDate;
            return productCategory;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductCategoryId
        {
            get
            {
                return _ProductCategoryId;
            }
            set
            {
                if (_ProductCategoryId != value)
                {
                    OnProductCategoryIdChanging(value);
                    ReportPropertyChanging("ProductCategoryId");
                    _ProductCategoryId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductCategoryId");
                    OnProductCategoryIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductCategoryId;
        partial void OnProductCategoryIdChanging(global::System.Int32 value);
        partial void OnProductCategoryIdChanged();
    
        /// <summary>
        /// Category description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Changes in the cost of a product over time.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductCostHistory")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductCostHistory : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductCostHistory object.
        /// </summary>
        /// <param name="productId">Initial value of the ProductId property.</param>
        /// <param name="startDate">Initial value of the StartDate property.</param>
        /// <param name="standardCost">Initial value of the StandardCost property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductCostHistory CreateProductCostHistory(global::System.Int32 productId, global::System.DateTime startDate, global::System.Decimal standardCost, global::System.DateTime modifiedDate)
        {
            ProductCostHistory productCostHistory = new ProductCostHistory();
            productCostHistory.ProductId = productId;
            productCostHistory.StartDate = startDate;
            productCostHistory.StandardCost = standardCost;
            productCostHistory.ModifiedDate = modifiedDate;
            return productCostHistory;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Product identification number. Foreign key to Product.ProductID
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductId
        {
            get
            {
                return _ProductId;
            }
            set
            {
                if (_ProductId != value)
                {
                    OnProductIdChanging(value);
                    ReportPropertyChanging("ProductId");
                    _ProductId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductId");
                    OnProductIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductId;
        partial void OnProductIdChanging(global::System.Int32 value);
        partial void OnProductIdChanged();
    
        /// <summary>
        /// Product cost start date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime StartDate
        {
            get
            {
                return _StartDate;
            }
            set
            {
                if (_StartDate != value)
                {
                    OnStartDateChanging(value);
                    ReportPropertyChanging("StartDate");
                    _StartDate = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("StartDate");
                    OnStartDateChanged();
                }
            }
        }
        private global::System.DateTime _StartDate;
        partial void OnStartDateChanging(global::System.DateTime value);
        partial void OnStartDateChanged();
    
        /// <summary>
        /// Product cost end date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> EndDate
        {
            get
            {
                return _EndDate;
            }
            set
            {
                OnEndDateChanging(value);
                ReportPropertyChanging("EndDate");
                _EndDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("EndDate");
                OnEndDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _EndDate;
        partial void OnEndDateChanging(Nullable<global::System.DateTime> value);
        partial void OnEndDateChanged();
    
        /// <summary>
        /// Standard cost of the product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal StandardCost
        {
            get
            {
                return _StandardCost;
            }
            set
            {
                OnStandardCostChanging(value);
                ReportPropertyChanging("StandardCost");
                _StandardCost = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("StandardCost");
                OnStandardCostChanged();
            }
        }
        private global::System.Decimal _StandardCost;
        partial void OnStandardCostChanging(global::System.Decimal value);
        partial void OnStandardCostChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductCostHistory_ProductId", "Product")]
        public Product ProductIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductCostHistory_ProductId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductCostHistory_ProductId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductCostHistory_ProductId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.ProductCostHistory_ProductId", "Product", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Product descriptions in several languages.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductDescription")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductDescription : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductDescription object.
        /// </summary>
        /// <param name="productDescriptionId">Initial value of the ProductDescriptionId property.</param>
        /// <param name="description">Initial value of the Description property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductDescription CreateProductDescription(global::System.Int32 productDescriptionId, global::System.String description, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            ProductDescription productDescription = new ProductDescription();
            productDescription.ProductDescriptionId = productDescriptionId;
            productDescription.Description = description;
            productDescription.Rowguid = rowguid;
            productDescription.ModifiedDate = modifiedDate;
            return productDescription;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductDescriptionId
        {
            get
            {
                return _ProductDescriptionId;
            }
            set
            {
                if (_ProductDescriptionId != value)
                {
                    OnProductDescriptionIdChanging(value);
                    ReportPropertyChanging("ProductDescriptionId");
                    _ProductDescriptionId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductDescriptionId");
                    OnProductDescriptionIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductDescriptionId;
        partial void OnProductDescriptionIdChanging(global::System.Int32 value);
        partial void OnProductDescriptionIdChanged();
    
        /// <summary>
        /// Description of the product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Description
        {
            get
            {
                return _Description;
            }
            set
            {
                OnDescriptionChanging(value);
                ReportPropertyChanging("Description");
                _Description = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Description");
                OnDescriptionChanged();
            }
        }
        private global::System.String _Description;
        partial void OnDescriptionChanging(global::System.String value);
        partial void OnDescriptionChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Cross-reference table mapping products to related product documents.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductDocument")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductDocument : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductDocument object.
        /// </summary>
        /// <param name="productId">Initial value of the ProductId property.</param>
        /// <param name="documentId">Initial value of the DocumentId property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductDocument CreateProductDocument(global::System.Int32 productId, global::System.Int32 documentId, global::System.DateTime modifiedDate)
        {
            ProductDocument productDocument = new ProductDocument();
            productDocument.ProductId = productId;
            productDocument.DocumentId = documentId;
            productDocument.ModifiedDate = modifiedDate;
            return productDocument;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Product identification number. Foreign key to Product.ProductID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductId
        {
            get
            {
                return _ProductId;
            }
            set
            {
                if (_ProductId != value)
                {
                    OnProductIdChanging(value);
                    ReportPropertyChanging("ProductId");
                    _ProductId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductId");
                    OnProductIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductId;
        partial void OnProductIdChanging(global::System.Int32 value);
        partial void OnProductIdChanged();
    
        /// <summary>
        /// Document identification number. Foreign key to Document.DocumentID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 DocumentId
        {
            get
            {
                return _DocumentId;
            }
            set
            {
                if (_DocumentId != value)
                {
                    OnDocumentIdChanging(value);
                    ReportPropertyChanging("DocumentId");
                    _DocumentId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("DocumentId");
                    OnDocumentIdChanged();
                }
            }
        }
        private global::System.Int32 _DocumentId;
        partial void OnDocumentIdChanging(global::System.Int32 value);
        partial void OnDocumentIdChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductDocument_ProductId", "Product")]
        public Product ProductIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductDocument_ProductId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductDocument_ProductId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductDocument_ProductId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.ProductDocument_ProductId", "Product", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductDocument_DocumentId", "Document")]
        public Document DocumentIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Document>("MyProject4Model.ProductDocument_DocumentId", "Document").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Document>("MyProject4Model.ProductDocument_DocumentId", "Document").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Document> DocumentIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Document>("MyProject4Model.ProductDocument_DocumentId", "Document");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Document>("MyProject4Model.ProductDocument_DocumentId", "Document", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Product inventory information.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductInventory")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductInventory : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductInventory object.
        /// </summary>
        /// <param name="productId">Initial value of the ProductId property.</param>
        /// <param name="locationId">Initial value of the LocationId property.</param>
        /// <param name="shelf">Initial value of the Shelf property.</param>
        /// <param name="bin">Initial value of the Bin property.</param>
        /// <param name="quantity">Initial value of the Quantity property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductInventory CreateProductInventory(global::System.Int32 productId, global::System.Int16 locationId, global::System.String shelf, global::System.Byte bin, global::System.Int16 quantity, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            ProductInventory productInventory = new ProductInventory();
            productInventory.ProductId = productId;
            productInventory.LocationId = locationId;
            productInventory.Shelf = shelf;
            productInventory.Bin = bin;
            productInventory.Quantity = quantity;
            productInventory.Rowguid = rowguid;
            productInventory.ModifiedDate = modifiedDate;
            return productInventory;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Product identification number. Foreign key to Product.ProductID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductId
        {
            get
            {
                return _ProductId;
            }
            set
            {
                if (_ProductId != value)
                {
                    OnProductIdChanging(value);
                    ReportPropertyChanging("ProductId");
                    _ProductId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductId");
                    OnProductIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductId;
        partial void OnProductIdChanging(global::System.Int32 value);
        partial void OnProductIdChanged();
    
        /// <summary>
        /// Inventory location identification number. Foreign key to Location.LocationID. 
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 LocationId
        {
            get
            {
                return _LocationId;
            }
            set
            {
                if (_LocationId != value)
                {
                    OnLocationIdChanging(value);
                    ReportPropertyChanging("LocationId");
                    _LocationId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("LocationId");
                    OnLocationIdChanged();
                }
            }
        }
        private global::System.Int16 _LocationId;
        partial void OnLocationIdChanging(global::System.Int16 value);
        partial void OnLocationIdChanged();
    
        /// <summary>
        /// Storage compartment within an inventory location.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Shelf
        {
            get
            {
                return _Shelf;
            }
            set
            {
                OnShelfChanging(value);
                ReportPropertyChanging("Shelf");
                _Shelf = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Shelf");
                OnShelfChanged();
            }
        }
        private global::System.String _Shelf;
        partial void OnShelfChanging(global::System.String value);
        partial void OnShelfChanged();
    
        /// <summary>
        /// Storage container on a shelf in an inventory location.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte Bin
        {
            get
            {
                return _Bin;
            }
            set
            {
                OnBinChanging(value);
                ReportPropertyChanging("Bin");
                _Bin = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Bin");
                OnBinChanged();
            }
        }
        private global::System.Byte _Bin;
        partial void OnBinChanging(global::System.Byte value);
        partial void OnBinChanged();
    
        /// <summary>
        /// Quantity of products in the inventory location.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 Quantity
        {
            get
            {
                return _Quantity;
            }
            set
            {
                OnQuantityChanging(value);
                ReportPropertyChanging("Quantity");
                _Quantity = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Quantity");
                OnQuantityChanged();
            }
        }
        private global::System.Int16 _Quantity;
        partial void OnQuantityChanging(global::System.Int16 value);
        partial void OnQuantityChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductInventory_ProductId", "Product")]
        public Product ProductIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductInventory_ProductId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductInventory_ProductId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductInventory_ProductId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.ProductInventory_ProductId", "Product", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductInventory_LocationId", "Location")]
        public Location LocationIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Location>("MyProject4Model.ProductInventory_LocationId", "Location").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Location>("MyProject4Model.ProductInventory_LocationId", "Location").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Location> LocationIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Location>("MyProject4Model.ProductInventory_LocationId", "Location");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Location>("MyProject4Model.ProductInventory_LocationId", "Location", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Changes in the list price of a product over time.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductListPriceHistory")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductListPriceHistory : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductListPriceHistory object.
        /// </summary>
        /// <param name="productId">Initial value of the ProductId property.</param>
        /// <param name="startDate">Initial value of the StartDate property.</param>
        /// <param name="listPrice">Initial value of the ListPrice property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductListPriceHistory CreateProductListPriceHistory(global::System.Int32 productId, global::System.DateTime startDate, global::System.Decimal listPrice, global::System.DateTime modifiedDate)
        {
            ProductListPriceHistory productListPriceHistory = new ProductListPriceHistory();
            productListPriceHistory.ProductId = productId;
            productListPriceHistory.StartDate = startDate;
            productListPriceHistory.ListPrice = listPrice;
            productListPriceHistory.ModifiedDate = modifiedDate;
            return productListPriceHistory;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Product identification number. Foreign key to Product.ProductID
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductId
        {
            get
            {
                return _ProductId;
            }
            set
            {
                if (_ProductId != value)
                {
                    OnProductIdChanging(value);
                    ReportPropertyChanging("ProductId");
                    _ProductId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductId");
                    OnProductIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductId;
        partial void OnProductIdChanging(global::System.Int32 value);
        partial void OnProductIdChanged();
    
        /// <summary>
        /// List price start date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime StartDate
        {
            get
            {
                return _StartDate;
            }
            set
            {
                if (_StartDate != value)
                {
                    OnStartDateChanging(value);
                    ReportPropertyChanging("StartDate");
                    _StartDate = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("StartDate");
                    OnStartDateChanged();
                }
            }
        }
        private global::System.DateTime _StartDate;
        partial void OnStartDateChanging(global::System.DateTime value);
        partial void OnStartDateChanged();
    
        /// <summary>
        /// List price end date
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> EndDate
        {
            get
            {
                return _EndDate;
            }
            set
            {
                OnEndDateChanging(value);
                ReportPropertyChanging("EndDate");
                _EndDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("EndDate");
                OnEndDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _EndDate;
        partial void OnEndDateChanging(Nullable<global::System.DateTime> value);
        partial void OnEndDateChanged();
    
        /// <summary>
        /// Product list price.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal ListPrice
        {
            get
            {
                return _ListPrice;
            }
            set
            {
                OnListPriceChanging(value);
                ReportPropertyChanging("ListPrice");
                _ListPrice = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ListPrice");
                OnListPriceChanged();
            }
        }
        private global::System.Decimal _ListPrice;
        partial void OnListPriceChanging(global::System.Decimal value);
        partial void OnListPriceChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductListPriceHistory_ProductId", "Product")]
        public Product ProductIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductListPriceHistory_ProductId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductListPriceHistory_ProductId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductListPriceHistory_ProductId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.ProductListPriceHistory_ProductId", "Product", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Product model classification.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductModel")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductModel : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductModel object.
        /// </summary>
        /// <param name="productModelId">Initial value of the ProductModelId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductModel CreateProductModel(global::System.Int32 productModelId, global::System.String name, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            ProductModel productModel = new ProductModel();
            productModel.ProductModelId = productModelId;
            productModel.Name = name;
            productModel.Rowguid = rowguid;
            productModel.ModifiedDate = modifiedDate;
            return productModel;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductModelId
        {
            get
            {
                return _ProductModelId;
            }
            set
            {
                if (_ProductModelId != value)
                {
                    OnProductModelIdChanging(value);
                    ReportPropertyChanging("ProductModelId");
                    _ProductModelId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductModelId");
                    OnProductModelIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductModelId;
        partial void OnProductModelIdChanging(global::System.Int32 value);
        partial void OnProductModelIdChanged();
    
        /// <summary>
        /// Product model description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Detailed product catalog information in xml format.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String CatalogDescription
        {
            get
            {
                return _CatalogDescription;
            }
            set
            {
                OnCatalogDescriptionChanging(value);
                ReportPropertyChanging("CatalogDescription");
                _CatalogDescription = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("CatalogDescription");
                OnCatalogDescriptionChanged();
            }
        }
        private global::System.String _CatalogDescription;
        partial void OnCatalogDescriptionChanging(global::System.String value);
        partial void OnCatalogDescriptionChanged();
    
        /// <summary>
        /// Manufacturing instructions in xml format.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Instructions
        {
            get
            {
                return _Instructions;
            }
            set
            {
                OnInstructionsChanging(value);
                ReportPropertyChanging("Instructions");
                _Instructions = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Instructions");
                OnInstructionsChanged();
            }
        }
        private global::System.String _Instructions;
        partial void OnInstructionsChanging(global::System.String value);
        partial void OnInstructionsChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Cross-reference table mapping product models and illustrations.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductModelIllustration")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductModelIllustration : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductModelIllustration object.
        /// </summary>
        /// <param name="productModelId">Initial value of the ProductModelId property.</param>
        /// <param name="illustrationId">Initial value of the IllustrationId property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductModelIllustration CreateProductModelIllustration(global::System.Int32 productModelId, global::System.Int32 illustrationId, global::System.DateTime modifiedDate)
        {
            ProductModelIllustration productModelIllustration = new ProductModelIllustration();
            productModelIllustration.ProductModelId = productModelId;
            productModelIllustration.IllustrationId = illustrationId;
            productModelIllustration.ModifiedDate = modifiedDate;
            return productModelIllustration;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Primary key. Foreign key to ProductModel.ProductModelID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductModelId
        {
            get
            {
                return _ProductModelId;
            }
            set
            {
                if (_ProductModelId != value)
                {
                    OnProductModelIdChanging(value);
                    ReportPropertyChanging("ProductModelId");
                    _ProductModelId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductModelId");
                    OnProductModelIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductModelId;
        partial void OnProductModelIdChanging(global::System.Int32 value);
        partial void OnProductModelIdChanged();
    
        /// <summary>
        /// Primary key. Foreign key to Illustration.IllustrationID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 IllustrationId
        {
            get
            {
                return _IllustrationId;
            }
            set
            {
                if (_IllustrationId != value)
                {
                    OnIllustrationIdChanging(value);
                    ReportPropertyChanging("IllustrationId");
                    _IllustrationId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("IllustrationId");
                    OnIllustrationIdChanged();
                }
            }
        }
        private global::System.Int32 _IllustrationId;
        partial void OnIllustrationIdChanging(global::System.Int32 value);
        partial void OnIllustrationIdChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductModelIllustration_ProductModelId", "ProductModel")]
        public ProductModel ProductModelIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductModel>("MyProject4Model.ProductModelIllustration_ProductModelId", "ProductModel").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductModel>("MyProject4Model.ProductModelIllustration_ProductModelId", "ProductModel").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<ProductModel> ProductModelIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductModel>("MyProject4Model.ProductModelIllustration_ProductModelId", "ProductModel");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<ProductModel>("MyProject4Model.ProductModelIllustration_ProductModelId", "ProductModel", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductModelIllustration_IllustrationId", "Illustration")]
        public Illustration IllustrationIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Illustration>("MyProject4Model.ProductModelIllustration_IllustrationId", "Illustration").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Illustration>("MyProject4Model.ProductModelIllustration_IllustrationId", "Illustration").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Illustration> IllustrationIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Illustration>("MyProject4Model.ProductModelIllustration_IllustrationId", "Illustration");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Illustration>("MyProject4Model.ProductModelIllustration_IllustrationId", "Illustration", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Cross-reference table mapping product descriptions and the language the description is written in.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductModelProductDescriptionCulture")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductModelProductDescriptionCulture : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductModelProductDescriptionCulture object.
        /// </summary>
        /// <param name="productModelId">Initial value of the ProductModelId property.</param>
        /// <param name="productDescriptionId">Initial value of the ProductDescriptionId property.</param>
        /// <param name="cultureId">Initial value of the CultureId property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductModelProductDescriptionCulture CreateProductModelProductDescriptionCulture(global::System.Int32 productModelId, global::System.Int32 productDescriptionId, global::System.String cultureId, global::System.DateTime modifiedDate)
        {
            ProductModelProductDescriptionCulture productModelProductDescriptionCulture = new ProductModelProductDescriptionCulture();
            productModelProductDescriptionCulture.ProductModelId = productModelId;
            productModelProductDescriptionCulture.ProductDescriptionId = productDescriptionId;
            productModelProductDescriptionCulture.CultureId = cultureId;
            productModelProductDescriptionCulture.ModifiedDate = modifiedDate;
            return productModelProductDescriptionCulture;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Primary key. Foreign key to ProductModel.ProductModelID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductModelId
        {
            get
            {
                return _ProductModelId;
            }
            set
            {
                if (_ProductModelId != value)
                {
                    OnProductModelIdChanging(value);
                    ReportPropertyChanging("ProductModelId");
                    _ProductModelId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductModelId");
                    OnProductModelIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductModelId;
        partial void OnProductModelIdChanging(global::System.Int32 value);
        partial void OnProductModelIdChanged();
    
        /// <summary>
        /// Primary key. Foreign key to ProductDescription.ProductDescriptionID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductDescriptionId
        {
            get
            {
                return _ProductDescriptionId;
            }
            set
            {
                if (_ProductDescriptionId != value)
                {
                    OnProductDescriptionIdChanging(value);
                    ReportPropertyChanging("ProductDescriptionId");
                    _ProductDescriptionId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductDescriptionId");
                    OnProductDescriptionIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductDescriptionId;
        partial void OnProductDescriptionIdChanging(global::System.Int32 value);
        partial void OnProductDescriptionIdChanged();
    
        /// <summary>
        /// Culture identification number. Foreign key to Culture.CultureID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String CultureId
        {
            get
            {
                return _CultureId;
            }
            set
            {
                if (_CultureId != value)
                {
                    OnCultureIdChanging(value);
                    ReportPropertyChanging("CultureId");
                    _CultureId = StructuralObject.SetValidValue(value, false);
                    ReportPropertyChanged("CultureId");
                    OnCultureIdChanged();
                }
            }
        }
        private global::System.String _CultureId;
        partial void OnCultureIdChanging(global::System.String value);
        partial void OnCultureIdChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductModelProductDescriptionCulture_ProductModelId", "ProductModel")]
        public ProductModel ProductModelIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductModel>("MyProject4Model.ProductModelProductDescriptionCulture_ProductModelId", "ProductModel").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductModel>("MyProject4Model.ProductModelProductDescriptionCulture_ProductModelId", "ProductModel").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<ProductModel> ProductModelIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductModel>("MyProject4Model.ProductModelProductDescriptionCulture_ProductModelId", "ProductModel");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<ProductModel>("MyProject4Model.ProductModelProductDescriptionCulture_ProductModelId", "ProductModel", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductModelProductDescriptionCulture_ProductDescriptionId", "ProductDescription")]
        public ProductDescription ProductDescriptionIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductDescription>("MyProject4Model.ProductModelProductDescriptionCulture_ProductDescriptionId", "ProductDescription").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductDescription>("MyProject4Model.ProductModelProductDescriptionCulture_ProductDescriptionId", "ProductDescription").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<ProductDescription> ProductDescriptionIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductDescription>("MyProject4Model.ProductModelProductDescriptionCulture_ProductDescriptionId", "ProductDescription");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<ProductDescription>("MyProject4Model.ProductModelProductDescriptionCulture_ProductDescriptionId", "ProductDescription", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductModelProductDescriptionCulture_CultureId", "Culture")]
        public Culture CultureIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Culture>("MyProject4Model.ProductModelProductDescriptionCulture_CultureId", "Culture").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Culture>("MyProject4Model.ProductModelProductDescriptionCulture_CultureId", "Culture").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Culture> CultureIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Culture>("MyProject4Model.ProductModelProductDescriptionCulture_CultureId", "Culture");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Culture>("MyProject4Model.ProductModelProductDescriptionCulture_CultureId", "Culture", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Product images.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductPhoto")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductPhoto : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductPhoto object.
        /// </summary>
        /// <param name="productPhotoId">Initial value of the ProductPhotoId property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductPhoto CreateProductPhoto(global::System.Int32 productPhotoId, global::System.DateTime modifiedDate)
        {
            ProductPhoto productPhoto = new ProductPhoto();
            productPhoto.ProductPhotoId = productPhotoId;
            productPhoto.ModifiedDate = modifiedDate;
            return productPhoto;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductPhotoId
        {
            get
            {
                return _ProductPhotoId;
            }
            set
            {
                if (_ProductPhotoId != value)
                {
                    OnProductPhotoIdChanging(value);
                    ReportPropertyChanging("ProductPhotoId");
                    _ProductPhotoId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductPhotoId");
                    OnProductPhotoIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductPhotoId;
        partial void OnProductPhotoIdChanging(global::System.Int32 value);
        partial void OnProductPhotoIdChanged();
    
        /// <summary>
        /// Small image of the product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.Byte[] ThumbNailPhoto
        {
            get
            {
                return StructuralObject.GetValidValue(_ThumbNailPhoto);
            }
            set
            {
                OnThumbNailPhotoChanging(value);
                ReportPropertyChanging("ThumbNailPhoto");
                _ThumbNailPhoto = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("ThumbNailPhoto");
                OnThumbNailPhotoChanged();
            }
        }
        private global::System.Byte[] _ThumbNailPhoto;
        partial void OnThumbNailPhotoChanging(global::System.Byte[] value);
        partial void OnThumbNailPhotoChanged();
    
        /// <summary>
        /// Small image file name.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String ThumbnailPhotoFileName
        {
            get
            {
                return _ThumbnailPhotoFileName;
            }
            set
            {
                OnThumbnailPhotoFileNameChanging(value);
                ReportPropertyChanging("ThumbnailPhotoFileName");
                _ThumbnailPhotoFileName = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("ThumbnailPhotoFileName");
                OnThumbnailPhotoFileNameChanged();
            }
        }
        private global::System.String _ThumbnailPhotoFileName;
        partial void OnThumbnailPhotoFileNameChanging(global::System.String value);
        partial void OnThumbnailPhotoFileNameChanged();
    
        /// <summary>
        /// Large image of the product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.Byte[] LargePhoto
        {
            get
            {
                return StructuralObject.GetValidValue(_LargePhoto);
            }
            set
            {
                OnLargePhotoChanging(value);
                ReportPropertyChanging("LargePhoto");
                _LargePhoto = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("LargePhoto");
                OnLargePhotoChanged();
            }
        }
        private global::System.Byte[] _LargePhoto;
        partial void OnLargePhotoChanging(global::System.Byte[] value);
        partial void OnLargePhotoChanged();
    
        /// <summary>
        /// Large image file name.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String LargePhotoFileName
        {
            get
            {
                return _LargePhotoFileName;
            }
            set
            {
                OnLargePhotoFileNameChanging(value);
                ReportPropertyChanging("LargePhotoFileName");
                _LargePhotoFileName = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("LargePhotoFileName");
                OnLargePhotoFileNameChanged();
            }
        }
        private global::System.String _LargePhotoFileName;
        partial void OnLargePhotoFileNameChanging(global::System.String value);
        partial void OnLargePhotoFileNameChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Cross-reference table mapping products and product photos.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductProductPhoto")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductProductPhoto : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductProductPhoto object.
        /// </summary>
        /// <param name="productId">Initial value of the ProductId property.</param>
        /// <param name="productPhotoId">Initial value of the ProductPhotoId property.</param>
        /// <param name="primary">Initial value of the Primary property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductProductPhoto CreateProductProductPhoto(global::System.Int32 productId, global::System.Int32 productPhotoId, global::System.Boolean primary, global::System.DateTime modifiedDate)
        {
            ProductProductPhoto productProductPhoto = new ProductProductPhoto();
            productProductPhoto.ProductId = productId;
            productProductPhoto.ProductPhotoId = productPhotoId;
            productProductPhoto.Primary = primary;
            productProductPhoto.ModifiedDate = modifiedDate;
            return productProductPhoto;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Product identification number. Foreign key to Product.ProductID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductId
        {
            get
            {
                return _ProductId;
            }
            set
            {
                if (_ProductId != value)
                {
                    OnProductIdChanging(value);
                    ReportPropertyChanging("ProductId");
                    _ProductId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductId");
                    OnProductIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductId;
        partial void OnProductIdChanging(global::System.Int32 value);
        partial void OnProductIdChanged();
    
        /// <summary>
        /// Product photo identification number. Foreign key to ProductPhoto.ProductPhotoID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductPhotoId
        {
            get
            {
                return _ProductPhotoId;
            }
            set
            {
                if (_ProductPhotoId != value)
                {
                    OnProductPhotoIdChanging(value);
                    ReportPropertyChanging("ProductPhotoId");
                    _ProductPhotoId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductPhotoId");
                    OnProductPhotoIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductPhotoId;
        partial void OnProductPhotoIdChanging(global::System.Int32 value);
        partial void OnProductPhotoIdChanged();
    
        /// <summary>
        /// 0 = Photo is not the principal image. 1 = Photo is the principal image.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Boolean Primary
        {
            get
            {
                return _Primary;
            }
            set
            {
                OnPrimaryChanging(value);
                ReportPropertyChanging("Primary");
                _Primary = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Primary");
                OnPrimaryChanged();
            }
        }
        private global::System.Boolean _Primary;
        partial void OnPrimaryChanging(global::System.Boolean value);
        partial void OnPrimaryChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductProductPhoto_ProductId", "Product")]
        public Product ProductIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductProductPhoto_ProductId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductProductPhoto_ProductId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductProductPhoto_ProductId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.ProductProductPhoto_ProductId", "Product", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductProductPhoto_ProductPhotoId", "ProductPhoto")]
        public ProductPhoto ProductPhotoIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductPhoto>("MyProject4Model.ProductProductPhoto_ProductPhotoId", "ProductPhoto").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductPhoto>("MyProject4Model.ProductProductPhoto_ProductPhotoId", "ProductPhoto").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<ProductPhoto> ProductPhotoIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductPhoto>("MyProject4Model.ProductProductPhoto_ProductPhotoId", "ProductPhoto");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<ProductPhoto>("MyProject4Model.ProductProductPhoto_ProductPhotoId", "ProductPhoto", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Customer reviews of products they have purchased.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductReview")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductReview : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductReview object.
        /// </summary>
        /// <param name="productReviewId">Initial value of the ProductReviewId property.</param>
        /// <param name="reviewerName">Initial value of the ReviewerName property.</param>
        /// <param name="reviewDate">Initial value of the ReviewDate property.</param>
        /// <param name="emailAddress">Initial value of the EmailAddress property.</param>
        /// <param name="rating">Initial value of the Rating property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductReview CreateProductReview(global::System.Int32 productReviewId, global::System.String reviewerName, global::System.DateTime reviewDate, global::System.String emailAddress, global::System.Int32 rating, global::System.DateTime modifiedDate)
        {
            ProductReview productReview = new ProductReview();
            productReview.ProductReviewId = productReviewId;
            productReview.ReviewerName = reviewerName;
            productReview.ReviewDate = reviewDate;
            productReview.EmailAddress = emailAddress;
            productReview.Rating = rating;
            productReview.ModifiedDate = modifiedDate;
            return productReview;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductReviewId
        {
            get
            {
                return _ProductReviewId;
            }
            set
            {
                if (_ProductReviewId != value)
                {
                    OnProductReviewIdChanging(value);
                    ReportPropertyChanging("ProductReviewId");
                    _ProductReviewId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductReviewId");
                    OnProductReviewIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductReviewId;
        partial void OnProductReviewIdChanging(global::System.Int32 value);
        partial void OnProductReviewIdChanged();
    
        /// <summary>
        /// Name of the reviewer.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String ReviewerName
        {
            get
            {
                return _ReviewerName;
            }
            set
            {
                OnReviewerNameChanging(value);
                ReportPropertyChanging("ReviewerName");
                _ReviewerName = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("ReviewerName");
                OnReviewerNameChanged();
            }
        }
        private global::System.String _ReviewerName;
        partial void OnReviewerNameChanging(global::System.String value);
        partial void OnReviewerNameChanged();
    
        /// <summary>
        /// Date review was submitted.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ReviewDate
        {
            get
            {
                return _ReviewDate;
            }
            set
            {
                OnReviewDateChanging(value);
                ReportPropertyChanging("ReviewDate");
                _ReviewDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ReviewDate");
                OnReviewDateChanged();
            }
        }
        private global::System.DateTime _ReviewDate;
        partial void OnReviewDateChanging(global::System.DateTime value);
        partial void OnReviewDateChanged();
    
        /// <summary>
        /// Reviewer&apos;s e-mail address.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String EmailAddress
        {
            get
            {
                return _EmailAddress;
            }
            set
            {
                OnEmailAddressChanging(value);
                ReportPropertyChanging("EmailAddress");
                _EmailAddress = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("EmailAddress");
                OnEmailAddressChanged();
            }
        }
        private global::System.String _EmailAddress;
        partial void OnEmailAddressChanging(global::System.String value);
        partial void OnEmailAddressChanged();
    
        /// <summary>
        /// Product rating given by the reviewer. Scale is 1 to 5 with 5 as the highest rating.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 Rating
        {
            get
            {
                return _Rating;
            }
            set
            {
                OnRatingChanging(value);
                ReportPropertyChanging("Rating");
                _Rating = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rating");
                OnRatingChanged();
            }
        }
        private global::System.Int32 _Rating;
        partial void OnRatingChanging(global::System.Int32 value);
        partial void OnRatingChanged();
    
        /// <summary>
        /// Reviewer&apos;s comments
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Comments
        {
            get
            {
                return _Comments;
            }
            set
            {
                OnCommentsChanging(value);
                ReportPropertyChanging("Comments");
                _Comments = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Comments");
                OnCommentsChanged();
            }
        }
        private global::System.String _Comments;
        partial void OnCommentsChanging(global::System.String value);
        partial void OnCommentsChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductReview_ProductId", "Product")]
        public Product ProductIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductReview_ProductId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductReview_ProductId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductReview_ProductId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.ProductReview_ProductId", "Product", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Product subcategories. See ProductCategory table.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductSubcategory")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductSubcategory : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductSubcategory object.
        /// </summary>
        /// <param name="productSubcategoryId">Initial value of the ProductSubcategoryId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductSubcategory CreateProductSubcategory(global::System.Int32 productSubcategoryId, global::System.String name, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            ProductSubcategory productSubcategory = new ProductSubcategory();
            productSubcategory.ProductSubcategoryId = productSubcategoryId;
            productSubcategory.Name = name;
            productSubcategory.Rowguid = rowguid;
            productSubcategory.ModifiedDate = modifiedDate;
            return productSubcategory;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductSubcategoryId
        {
            get
            {
                return _ProductSubcategoryId;
            }
            set
            {
                if (_ProductSubcategoryId != value)
                {
                    OnProductSubcategoryIdChanging(value);
                    ReportPropertyChanging("ProductSubcategoryId");
                    _ProductSubcategoryId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductSubcategoryId");
                    OnProductSubcategoryIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductSubcategoryId;
        partial void OnProductSubcategoryIdChanging(global::System.Int32 value);
        partial void OnProductSubcategoryIdChanged();
    
        /// <summary>
        /// Subcategory description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductSubcategory_ProductCategoryId", "ProductCategory")]
        public ProductCategory ProductCategoryIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductCategory>("MyProject4Model.ProductSubcategory_ProductCategoryId", "ProductCategory").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductCategory>("MyProject4Model.ProductSubcategory_ProductCategoryId", "ProductCategory").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<ProductCategory> ProductCategoryIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ProductCategory>("MyProject4Model.ProductSubcategory_ProductCategoryId", "ProductCategory");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<ProductCategory>("MyProject4Model.ProductSubcategory_ProductCategoryId", "ProductCategory", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Cross-reference table mapping vendors with the products they supply.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ProductVendor")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ProductVendor : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ProductVendor object.
        /// </summary>
        /// <param name="productId">Initial value of the ProductId property.</param>
        /// <param name="vendorId">Initial value of the VendorId property.</param>
        /// <param name="averageLeadTime">Initial value of the AverageLeadTime property.</param>
        /// <param name="standardPrice">Initial value of the StandardPrice property.</param>
        /// <param name="minOrderQty">Initial value of the MinOrderQty property.</param>
        /// <param name="maxOrderQty">Initial value of the MaxOrderQty property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ProductVendor CreateProductVendor(global::System.Int32 productId, global::System.Int32 vendorId, global::System.Int32 averageLeadTime, global::System.Decimal standardPrice, global::System.Int32 minOrderQty, global::System.Int32 maxOrderQty, global::System.DateTime modifiedDate)
        {
            ProductVendor productVendor = new ProductVendor();
            productVendor.ProductId = productId;
            productVendor.VendorId = vendorId;
            productVendor.AverageLeadTime = averageLeadTime;
            productVendor.StandardPrice = standardPrice;
            productVendor.MinOrderQty = minOrderQty;
            productVendor.MaxOrderQty = maxOrderQty;
            productVendor.ModifiedDate = modifiedDate;
            return productVendor;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Primary key. Foreign key to Product.ProductID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductId
        {
            get
            {
                return _ProductId;
            }
            set
            {
                if (_ProductId != value)
                {
                    OnProductIdChanging(value);
                    ReportPropertyChanging("ProductId");
                    _ProductId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductId");
                    OnProductIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductId;
        partial void OnProductIdChanging(global::System.Int32 value);
        partial void OnProductIdChanged();
    
        /// <summary>
        /// Primary key. Foreign key to Vendor.VendorID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 VendorId
        {
            get
            {
                return _VendorId;
            }
            set
            {
                if (_VendorId != value)
                {
                    OnVendorIdChanging(value);
                    ReportPropertyChanging("VendorId");
                    _VendorId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("VendorId");
                    OnVendorIdChanged();
                }
            }
        }
        private global::System.Int32 _VendorId;
        partial void OnVendorIdChanging(global::System.Int32 value);
        partial void OnVendorIdChanged();
    
        /// <summary>
        /// The average span of time (in days) between placing an order with the vendor and receiving the purchased product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 AverageLeadTime
        {
            get
            {
                return _AverageLeadTime;
            }
            set
            {
                OnAverageLeadTimeChanging(value);
                ReportPropertyChanging("AverageLeadTime");
                _AverageLeadTime = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("AverageLeadTime");
                OnAverageLeadTimeChanged();
            }
        }
        private global::System.Int32 _AverageLeadTime;
        partial void OnAverageLeadTimeChanging(global::System.Int32 value);
        partial void OnAverageLeadTimeChanged();
    
        /// <summary>
        /// The vendor&apos;s usual selling price.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal StandardPrice
        {
            get
            {
                return _StandardPrice;
            }
            set
            {
                OnStandardPriceChanging(value);
                ReportPropertyChanging("StandardPrice");
                _StandardPrice = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("StandardPrice");
                OnStandardPriceChanged();
            }
        }
        private global::System.Decimal _StandardPrice;
        partial void OnStandardPriceChanging(global::System.Decimal value);
        partial void OnStandardPriceChanged();
    
        /// <summary>
        /// The selling price when last purchased.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.Decimal> LastReceiptCost
        {
            get
            {
                return _LastReceiptCost;
            }
            set
            {
                OnLastReceiptCostChanging(value);
                ReportPropertyChanging("LastReceiptCost");
                _LastReceiptCost = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("LastReceiptCost");
                OnLastReceiptCostChanged();
            }
        }
        private Nullable<global::System.Decimal> _LastReceiptCost;
        partial void OnLastReceiptCostChanging(Nullable<global::System.Decimal> value);
        partial void OnLastReceiptCostChanged();
    
        /// <summary>
        /// Date the product was last received by the vendor.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> LastReceiptDate
        {
            get
            {
                return _LastReceiptDate;
            }
            set
            {
                OnLastReceiptDateChanging(value);
                ReportPropertyChanging("LastReceiptDate");
                _LastReceiptDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("LastReceiptDate");
                OnLastReceiptDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _LastReceiptDate;
        partial void OnLastReceiptDateChanging(Nullable<global::System.DateTime> value);
        partial void OnLastReceiptDateChanged();
    
        /// <summary>
        /// The maximum quantity that should be ordered.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 MinOrderQty
        {
            get
            {
                return _MinOrderQty;
            }
            set
            {
                OnMinOrderQtyChanging(value);
                ReportPropertyChanging("MinOrderQty");
                _MinOrderQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("MinOrderQty");
                OnMinOrderQtyChanged();
            }
        }
        private global::System.Int32 _MinOrderQty;
        partial void OnMinOrderQtyChanging(global::System.Int32 value);
        partial void OnMinOrderQtyChanged();
    
        /// <summary>
        /// The minimum quantity that should be ordered.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 MaxOrderQty
        {
            get
            {
                return _MaxOrderQty;
            }
            set
            {
                OnMaxOrderQtyChanging(value);
                ReportPropertyChanging("MaxOrderQty");
                _MaxOrderQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("MaxOrderQty");
                OnMaxOrderQtyChanged();
            }
        }
        private global::System.Int32 _MaxOrderQty;
        partial void OnMaxOrderQtyChanging(global::System.Int32 value);
        partial void OnMaxOrderQtyChanged();
    
        /// <summary>
        /// The quantity currently on order.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.Int32> OnOrderQty
        {
            get
            {
                return _OnOrderQty;
            }
            set
            {
                OnOnOrderQtyChanging(value);
                ReportPropertyChanging("OnOrderQty");
                _OnOrderQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("OnOrderQty");
                OnOnOrderQtyChanged();
            }
        }
        private Nullable<global::System.Int32> _OnOrderQty;
        partial void OnOnOrderQtyChanging(Nullable<global::System.Int32> value);
        partial void OnOnOrderQtyChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductVendor_UnitMeasureCode", "UnitMeasure")]
        public UnitMeasure UnitMeasureCodeObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<UnitMeasure>("MyProject4Model.ProductVendor_UnitMeasureCode", "UnitMeasure").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<UnitMeasure>("MyProject4Model.ProductVendor_UnitMeasureCode", "UnitMeasure").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<UnitMeasure> UnitMeasureCodeObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<UnitMeasure>("MyProject4Model.ProductVendor_UnitMeasureCode", "UnitMeasure");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<UnitMeasure>("MyProject4Model.ProductVendor_UnitMeasureCode", "UnitMeasure", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductVendor_ProductId", "Product")]
        public Product ProductIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductVendor_ProductId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductVendor_ProductId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ProductVendor_ProductId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.ProductVendor_ProductId", "Product", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ProductVendor_VendorId", "Vendor")]
        public Vendor VendorIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Vendor>("MyProject4Model.ProductVendor_VendorId", "Vendor").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Vendor>("MyProject4Model.ProductVendor_VendorId", "Vendor").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Vendor> VendorIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Vendor>("MyProject4Model.ProductVendor_VendorId", "Vendor");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Vendor>("MyProject4Model.ProductVendor_VendorId", "Vendor", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Individual products associated with a specific purchase order. See PurchaseOrderHeader.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="PurchaseOrderDetail")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class PurchaseOrderDetail : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new PurchaseOrderDetail object.
        /// </summary>
        /// <param name="purchaseOrderId">Initial value of the PurchaseOrderId property.</param>
        /// <param name="purchaseOrderDetailId">Initial value of the PurchaseOrderDetailId property.</param>
        /// <param name="dueDate">Initial value of the DueDate property.</param>
        /// <param name="orderQty">Initial value of the OrderQty property.</param>
        /// <param name="unitPrice">Initial value of the UnitPrice property.</param>
        /// <param name="lineTotal">Initial value of the LineTotal property.</param>
        /// <param name="receivedQty">Initial value of the ReceivedQty property.</param>
        /// <param name="rejectedQty">Initial value of the RejectedQty property.</param>
        /// <param name="stockedQty">Initial value of the StockedQty property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static PurchaseOrderDetail CreatePurchaseOrderDetail(global::System.Int32 purchaseOrderId, global::System.Int32 purchaseOrderDetailId, global::System.DateTime dueDate, global::System.Int16 orderQty, global::System.Decimal unitPrice, global::System.Decimal lineTotal, global::System.Decimal receivedQty, global::System.Decimal rejectedQty, global::System.Decimal stockedQty, global::System.DateTime modifiedDate)
        {
            PurchaseOrderDetail purchaseOrderDetail = new PurchaseOrderDetail();
            purchaseOrderDetail.PurchaseOrderId = purchaseOrderId;
            purchaseOrderDetail.PurchaseOrderDetailId = purchaseOrderDetailId;
            purchaseOrderDetail.DueDate = dueDate;
            purchaseOrderDetail.OrderQty = orderQty;
            purchaseOrderDetail.UnitPrice = unitPrice;
            purchaseOrderDetail.LineTotal = lineTotal;
            purchaseOrderDetail.ReceivedQty = receivedQty;
            purchaseOrderDetail.RejectedQty = rejectedQty;
            purchaseOrderDetail.StockedQty = stockedQty;
            purchaseOrderDetail.ModifiedDate = modifiedDate;
            return purchaseOrderDetail;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Primary key. Foreign key to PurchaseOrderHeader.PurchaseOrderID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 PurchaseOrderId
        {
            get
            {
                return _PurchaseOrderId;
            }
            set
            {
                if (_PurchaseOrderId != value)
                {
                    OnPurchaseOrderIdChanging(value);
                    ReportPropertyChanging("PurchaseOrderId");
                    _PurchaseOrderId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("PurchaseOrderId");
                    OnPurchaseOrderIdChanged();
                }
            }
        }
        private global::System.Int32 _PurchaseOrderId;
        partial void OnPurchaseOrderIdChanging(global::System.Int32 value);
        partial void OnPurchaseOrderIdChanged();
    
        /// <summary>
        /// Primary key. One line number per purchased product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 PurchaseOrderDetailId
        {
            get
            {
                return _PurchaseOrderDetailId;
            }
            set
            {
                if (_PurchaseOrderDetailId != value)
                {
                    OnPurchaseOrderDetailIdChanging(value);
                    ReportPropertyChanging("PurchaseOrderDetailId");
                    _PurchaseOrderDetailId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("PurchaseOrderDetailId");
                    OnPurchaseOrderDetailIdChanged();
                }
            }
        }
        private global::System.Int32 _PurchaseOrderDetailId;
        partial void OnPurchaseOrderDetailIdChanging(global::System.Int32 value);
        partial void OnPurchaseOrderDetailIdChanged();
    
        /// <summary>
        /// Date the product is expected to be received.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime DueDate
        {
            get
            {
                return _DueDate;
            }
            set
            {
                OnDueDateChanging(value);
                ReportPropertyChanging("DueDate");
                _DueDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("DueDate");
                OnDueDateChanged();
            }
        }
        private global::System.DateTime _DueDate;
        partial void OnDueDateChanging(global::System.DateTime value);
        partial void OnDueDateChanged();
    
        /// <summary>
        /// Quantity ordered.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 OrderQty
        {
            get
            {
                return _OrderQty;
            }
            set
            {
                OnOrderQtyChanging(value);
                ReportPropertyChanging("OrderQty");
                _OrderQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("OrderQty");
                OnOrderQtyChanged();
            }
        }
        private global::System.Int16 _OrderQty;
        partial void OnOrderQtyChanging(global::System.Int16 value);
        partial void OnOrderQtyChanged();
    
        /// <summary>
        /// Vendor&apos;s selling price of a single product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal UnitPrice
        {
            get
            {
                return _UnitPrice;
            }
            set
            {
                OnUnitPriceChanging(value);
                ReportPropertyChanging("UnitPrice");
                _UnitPrice = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("UnitPrice");
                OnUnitPriceChanged();
            }
        }
        private global::System.Decimal _UnitPrice;
        partial void OnUnitPriceChanging(global::System.Decimal value);
        partial void OnUnitPriceChanged();
    
        /// <summary>
        /// Per product subtotal. Computed as OrderQty * UnitPrice.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal LineTotal
        {
            get
            {
                return _LineTotal;
            }
            set
            {
                OnLineTotalChanging(value);
                ReportPropertyChanging("LineTotal");
                _LineTotal = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("LineTotal");
                OnLineTotalChanged();
            }
        }
        private global::System.Decimal _LineTotal;
        partial void OnLineTotalChanging(global::System.Decimal value);
        partial void OnLineTotalChanged();
    
        /// <summary>
        /// Quantity actually received from the vendor.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal ReceivedQty
        {
            get
            {
                return _ReceivedQty;
            }
            set
            {
                OnReceivedQtyChanging(value);
                ReportPropertyChanging("ReceivedQty");
                _ReceivedQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ReceivedQty");
                OnReceivedQtyChanged();
            }
        }
        private global::System.Decimal _ReceivedQty;
        partial void OnReceivedQtyChanging(global::System.Decimal value);
        partial void OnReceivedQtyChanged();
    
        /// <summary>
        /// Quantity rejected during inspection.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal RejectedQty
        {
            get
            {
                return _RejectedQty;
            }
            set
            {
                OnRejectedQtyChanging(value);
                ReportPropertyChanging("RejectedQty");
                _RejectedQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("RejectedQty");
                OnRejectedQtyChanged();
            }
        }
        private global::System.Decimal _RejectedQty;
        partial void OnRejectedQtyChanging(global::System.Decimal value);
        partial void OnRejectedQtyChanged();
    
        /// <summary>
        /// Quantity accepted into inventory. Computed as ReceivedQty - RejectedQty.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal StockedQty
        {
            get
            {
                return _StockedQty;
            }
            set
            {
                OnStockedQtyChanging(value);
                ReportPropertyChanging("StockedQty");
                _StockedQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("StockedQty");
                OnStockedQtyChanged();
            }
        }
        private global::System.Decimal _StockedQty;
        partial void OnStockedQtyChanging(global::System.Decimal value);
        partial void OnStockedQtyChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "PurchaseOrderDetail_ProductId", "Product")]
        public Product ProductIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.PurchaseOrderDetail_ProductId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.PurchaseOrderDetail_ProductId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.PurchaseOrderDetail_ProductId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.PurchaseOrderDetail_ProductId", "Product", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "PurchaseOrderDetail_PurchaseOrderId", "PurchaseOrderHeader")]
        public PurchaseOrderHeader PurchaseOrderIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<PurchaseOrderHeader>("MyProject4Model.PurchaseOrderDetail_PurchaseOrderId", "PurchaseOrderHeader").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<PurchaseOrderHeader>("MyProject4Model.PurchaseOrderDetail_PurchaseOrderId", "PurchaseOrderHeader").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<PurchaseOrderHeader> PurchaseOrderIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<PurchaseOrderHeader>("MyProject4Model.PurchaseOrderDetail_PurchaseOrderId", "PurchaseOrderHeader");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<PurchaseOrderHeader>("MyProject4Model.PurchaseOrderDetail_PurchaseOrderId", "PurchaseOrderHeader", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// General purchase order information. See PurchaseOrderDetail.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="PurchaseOrderHeader")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class PurchaseOrderHeader : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new PurchaseOrderHeader object.
        /// </summary>
        /// <param name="purchaseOrderId">Initial value of the PurchaseOrderId property.</param>
        /// <param name="revisionNumber">Initial value of the RevisionNumber property.</param>
        /// <param name="status">Initial value of the Status property.</param>
        /// <param name="orderDate">Initial value of the OrderDate property.</param>
        /// <param name="subTotal">Initial value of the SubTotal property.</param>
        /// <param name="taxAmt">Initial value of the TaxAmt property.</param>
        /// <param name="freight">Initial value of the Freight property.</param>
        /// <param name="totalDue">Initial value of the TotalDue property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static PurchaseOrderHeader CreatePurchaseOrderHeader(global::System.Int32 purchaseOrderId, global::System.Byte revisionNumber, global::System.Byte status, global::System.DateTime orderDate, global::System.Decimal subTotal, global::System.Decimal taxAmt, global::System.Decimal freight, global::System.Decimal totalDue, global::System.DateTime modifiedDate)
        {
            PurchaseOrderHeader purchaseOrderHeader = new PurchaseOrderHeader();
            purchaseOrderHeader.PurchaseOrderId = purchaseOrderId;
            purchaseOrderHeader.RevisionNumber = revisionNumber;
            purchaseOrderHeader.Status = status;
            purchaseOrderHeader.OrderDate = orderDate;
            purchaseOrderHeader.SubTotal = subTotal;
            purchaseOrderHeader.TaxAmt = taxAmt;
            purchaseOrderHeader.Freight = freight;
            purchaseOrderHeader.TotalDue = totalDue;
            purchaseOrderHeader.ModifiedDate = modifiedDate;
            return purchaseOrderHeader;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 PurchaseOrderId
        {
            get
            {
                return _PurchaseOrderId;
            }
            set
            {
                if (_PurchaseOrderId != value)
                {
                    OnPurchaseOrderIdChanging(value);
                    ReportPropertyChanging("PurchaseOrderId");
                    _PurchaseOrderId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("PurchaseOrderId");
                    OnPurchaseOrderIdChanged();
                }
            }
        }
        private global::System.Int32 _PurchaseOrderId;
        partial void OnPurchaseOrderIdChanging(global::System.Int32 value);
        partial void OnPurchaseOrderIdChanged();
    
        /// <summary>
        /// Incremental number to track changes to the purchase order over time.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte RevisionNumber
        {
            get
            {
                return _RevisionNumber;
            }
            set
            {
                OnRevisionNumberChanging(value);
                ReportPropertyChanging("RevisionNumber");
                _RevisionNumber = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("RevisionNumber");
                OnRevisionNumberChanged();
            }
        }
        private global::System.Byte _RevisionNumber;
        partial void OnRevisionNumberChanging(global::System.Byte value);
        partial void OnRevisionNumberChanged();
    
        /// <summary>
        /// Order current status. 1 = Pending; 2 = Approved; 3 = Rejected; 4 = Complete
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte Status
        {
            get
            {
                return _Status;
            }
            set
            {
                OnStatusChanging(value);
                ReportPropertyChanging("Status");
                _Status = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Status");
                OnStatusChanged();
            }
        }
        private global::System.Byte _Status;
        partial void OnStatusChanging(global::System.Byte value);
        partial void OnStatusChanged();
    
        /// <summary>
        /// Purchase order creation date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime OrderDate
        {
            get
            {
                return _OrderDate;
            }
            set
            {
                OnOrderDateChanging(value);
                ReportPropertyChanging("OrderDate");
                _OrderDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("OrderDate");
                OnOrderDateChanged();
            }
        }
        private global::System.DateTime _OrderDate;
        partial void OnOrderDateChanging(global::System.DateTime value);
        partial void OnOrderDateChanged();
    
        /// <summary>
        /// Estimated shipment date from the vendor.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> ShipDate
        {
            get
            {
                return _ShipDate;
            }
            set
            {
                OnShipDateChanging(value);
                ReportPropertyChanging("ShipDate");
                _ShipDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ShipDate");
                OnShipDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _ShipDate;
        partial void OnShipDateChanging(Nullable<global::System.DateTime> value);
        partial void OnShipDateChanged();
    
        /// <summary>
        /// Purchase order subtotal. Computed as SUM(PurchaseOrderDetail.LineTotal)for the appropriate PurchaseOrderID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal SubTotal
        {
            get
            {
                return _SubTotal;
            }
            set
            {
                OnSubTotalChanging(value);
                ReportPropertyChanging("SubTotal");
                _SubTotal = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SubTotal");
                OnSubTotalChanged();
            }
        }
        private global::System.Decimal _SubTotal;
        partial void OnSubTotalChanging(global::System.Decimal value);
        partial void OnSubTotalChanged();
    
        /// <summary>
        /// Tax amount.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal TaxAmt
        {
            get
            {
                return _TaxAmt;
            }
            set
            {
                OnTaxAmtChanging(value);
                ReportPropertyChanging("TaxAmt");
                _TaxAmt = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("TaxAmt");
                OnTaxAmtChanged();
            }
        }
        private global::System.Decimal _TaxAmt;
        partial void OnTaxAmtChanging(global::System.Decimal value);
        partial void OnTaxAmtChanged();
    
        /// <summary>
        /// Shipping cost.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal Freight
        {
            get
            {
                return _Freight;
            }
            set
            {
                OnFreightChanging(value);
                ReportPropertyChanging("Freight");
                _Freight = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Freight");
                OnFreightChanged();
            }
        }
        private global::System.Decimal _Freight;
        partial void OnFreightChanging(global::System.Decimal value);
        partial void OnFreightChanged();
    
        /// <summary>
        /// Total due to vendor. Computed as Subtotal + TaxAmt + Freight.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal TotalDue
        {
            get
            {
                return _TotalDue;
            }
            set
            {
                OnTotalDueChanging(value);
                ReportPropertyChanging("TotalDue");
                _TotalDue = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("TotalDue");
                OnTotalDueChanged();
            }
        }
        private global::System.Decimal _TotalDue;
        partial void OnTotalDueChanging(global::System.Decimal value);
        partial void OnTotalDueChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "PurchaseOrderHeader_EmployeeId", "Employee")]
        public Employee EmployeeIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.PurchaseOrderHeader_EmployeeId", "Employee").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.PurchaseOrderHeader_EmployeeId", "Employee").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Employee> EmployeeIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.PurchaseOrderHeader_EmployeeId", "Employee");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Employee>("MyProject4Model.PurchaseOrderHeader_EmployeeId", "Employee", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "PurchaseOrderHeader_VendorId", "Vendor")]
        public Vendor VendorIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Vendor>("MyProject4Model.PurchaseOrderHeader_VendorId", "Vendor").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Vendor>("MyProject4Model.PurchaseOrderHeader_VendorId", "Vendor").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Vendor> VendorIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Vendor>("MyProject4Model.PurchaseOrderHeader_VendorId", "Vendor");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Vendor>("MyProject4Model.PurchaseOrderHeader_VendorId", "Vendor", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "PurchaseOrderHeader_ShipMethodId", "ShipMethod")]
        public ShipMethod ShipMethodIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ShipMethod>("MyProject4Model.PurchaseOrderHeader_ShipMethodId", "ShipMethod").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ShipMethod>("MyProject4Model.PurchaseOrderHeader_ShipMethodId", "ShipMethod").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<ShipMethod> ShipMethodIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ShipMethod>("MyProject4Model.PurchaseOrderHeader_ShipMethodId", "ShipMethod");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<ShipMethod>("MyProject4Model.PurchaseOrderHeader_ShipMethodId", "ShipMethod", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Individual products associated with a specific sales order. See SalesOrderHeader.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="SalesOrderDetail")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class SalesOrderDetail : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new SalesOrderDetail object.
        /// </summary>
        /// <param name="salesOrderId">Initial value of the SalesOrderId property.</param>
        /// <param name="salesOrderDetailId">Initial value of the SalesOrderDetailId property.</param>
        /// <param name="orderQty">Initial value of the OrderQty property.</param>
        /// <param name="unitPrice">Initial value of the UnitPrice property.</param>
        /// <param name="unitPriceDiscount">Initial value of the UnitPriceDiscount property.</param>
        /// <param name="lineTotal">Initial value of the LineTotal property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static SalesOrderDetail CreateSalesOrderDetail(global::System.Int32 salesOrderId, global::System.Int32 salesOrderDetailId, global::System.Int16 orderQty, global::System.Decimal unitPrice, global::System.Decimal unitPriceDiscount, global::System.Decimal lineTotal, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            SalesOrderDetail salesOrderDetail = new SalesOrderDetail();
            salesOrderDetail.SalesOrderId = salesOrderId;
            salesOrderDetail.SalesOrderDetailId = salesOrderDetailId;
            salesOrderDetail.OrderQty = orderQty;
            salesOrderDetail.UnitPrice = unitPrice;
            salesOrderDetail.UnitPriceDiscount = unitPriceDiscount;
            salesOrderDetail.LineTotal = lineTotal;
            salesOrderDetail.Rowguid = rowguid;
            salesOrderDetail.ModifiedDate = modifiedDate;
            return salesOrderDetail;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Primary key. Foreign key to SalesOrderHeader.SalesOrderID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 SalesOrderId
        {
            get
            {
                return _SalesOrderId;
            }
            set
            {
                if (_SalesOrderId != value)
                {
                    OnSalesOrderIdChanging(value);
                    ReportPropertyChanging("SalesOrderId");
                    _SalesOrderId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SalesOrderId");
                    OnSalesOrderIdChanged();
                }
            }
        }
        private global::System.Int32 _SalesOrderId;
        partial void OnSalesOrderIdChanging(global::System.Int32 value);
        partial void OnSalesOrderIdChanged();
    
        /// <summary>
        /// Primary key. One incremental unique number per product sold.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 SalesOrderDetailId
        {
            get
            {
                return _SalesOrderDetailId;
            }
            set
            {
                if (_SalesOrderDetailId != value)
                {
                    OnSalesOrderDetailIdChanging(value);
                    ReportPropertyChanging("SalesOrderDetailId");
                    _SalesOrderDetailId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SalesOrderDetailId");
                    OnSalesOrderDetailIdChanged();
                }
            }
        }
        private global::System.Int32 _SalesOrderDetailId;
        partial void OnSalesOrderDetailIdChanging(global::System.Int32 value);
        partial void OnSalesOrderDetailIdChanged();
    
        /// <summary>
        /// Shipment tracking number supplied by the shipper.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String CarrierTrackingNumber
        {
            get
            {
                return _CarrierTrackingNumber;
            }
            set
            {
                OnCarrierTrackingNumberChanging(value);
                ReportPropertyChanging("CarrierTrackingNumber");
                _CarrierTrackingNumber = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("CarrierTrackingNumber");
                OnCarrierTrackingNumberChanged();
            }
        }
        private global::System.String _CarrierTrackingNumber;
        partial void OnCarrierTrackingNumberChanging(global::System.String value);
        partial void OnCarrierTrackingNumberChanged();
    
        /// <summary>
        /// Quantity ordered per product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 OrderQty
        {
            get
            {
                return _OrderQty;
            }
            set
            {
                OnOrderQtyChanging(value);
                ReportPropertyChanging("OrderQty");
                _OrderQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("OrderQty");
                OnOrderQtyChanged();
            }
        }
        private global::System.Int16 _OrderQty;
        partial void OnOrderQtyChanging(global::System.Int16 value);
        partial void OnOrderQtyChanged();
    
        /// <summary>
        /// Selling price of a single product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal UnitPrice
        {
            get
            {
                return _UnitPrice;
            }
            set
            {
                OnUnitPriceChanging(value);
                ReportPropertyChanging("UnitPrice");
                _UnitPrice = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("UnitPrice");
                OnUnitPriceChanged();
            }
        }
        private global::System.Decimal _UnitPrice;
        partial void OnUnitPriceChanging(global::System.Decimal value);
        partial void OnUnitPriceChanged();
    
        /// <summary>
        /// Discount amount.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal UnitPriceDiscount
        {
            get
            {
                return _UnitPriceDiscount;
            }
            set
            {
                OnUnitPriceDiscountChanging(value);
                ReportPropertyChanging("UnitPriceDiscount");
                _UnitPriceDiscount = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("UnitPriceDiscount");
                OnUnitPriceDiscountChanged();
            }
        }
        private global::System.Decimal _UnitPriceDiscount;
        partial void OnUnitPriceDiscountChanging(global::System.Decimal value);
        partial void OnUnitPriceDiscountChanged();
    
        /// <summary>
        /// Per product subtotal. Computed as UnitPrice * (1 - UnitPriceDiscount) * OrderQty.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal LineTotal
        {
            get
            {
                return _LineTotal;
            }
            set
            {
                OnLineTotalChanging(value);
                ReportPropertyChanging("LineTotal");
                _LineTotal = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("LineTotal");
                OnLineTotalChanged();
            }
        }
        private global::System.Decimal _LineTotal;
        partial void OnLineTotalChanging(global::System.Decimal value);
        partial void OnLineTotalChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderDetail_SpecialOfferProduct", "SpecialOfferProduct")]
        public SpecialOfferProduct SpecialOfferProductObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SpecialOfferProduct>("MyProject4Model.SalesOrderDetail_SpecialOfferProduct", "SpecialOfferProduct").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SpecialOfferProduct>("MyProject4Model.SalesOrderDetail_SpecialOfferProduct", "SpecialOfferProduct").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SpecialOfferProduct> SpecialOfferProductObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SpecialOfferProduct>("MyProject4Model.SalesOrderDetail_SpecialOfferProduct", "SpecialOfferProduct");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SpecialOfferProduct>("MyProject4Model.SalesOrderDetail_SpecialOfferProduct", "SpecialOfferProduct", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderDetail_SalesOrderId", "SalesOrderHeader")]
        public SalesOrderHeader SalesOrderIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesOrderHeader>("MyProject4Model.SalesOrderDetail_SalesOrderId", "SalesOrderHeader").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesOrderHeader>("MyProject4Model.SalesOrderDetail_SalesOrderId", "SalesOrderHeader").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SalesOrderHeader> SalesOrderIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesOrderHeader>("MyProject4Model.SalesOrderDetail_SalesOrderId", "SalesOrderHeader");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SalesOrderHeader>("MyProject4Model.SalesOrderDetail_SalesOrderId", "SalesOrderHeader", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// General sales order information.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="SalesOrderHeader")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class SalesOrderHeader : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new SalesOrderHeader object.
        /// </summary>
        /// <param name="salesOrderId">Initial value of the SalesOrderId property.</param>
        /// <param name="revisionNumber">Initial value of the RevisionNumber property.</param>
        /// <param name="orderDate">Initial value of the OrderDate property.</param>
        /// <param name="dueDate">Initial value of the DueDate property.</param>
        /// <param name="status">Initial value of the Status property.</param>
        /// <param name="onlineOrderFlag">Initial value of the OnlineOrderFlag property.</param>
        /// <param name="salesOrderNumber">Initial value of the SalesOrderNumber property.</param>
        /// <param name="subTotal">Initial value of the SubTotal property.</param>
        /// <param name="taxAmt">Initial value of the TaxAmt property.</param>
        /// <param name="freight">Initial value of the Freight property.</param>
        /// <param name="totalDue">Initial value of the TotalDue property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static SalesOrderHeader CreateSalesOrderHeader(global::System.Int32 salesOrderId, global::System.Byte revisionNumber, global::System.DateTime orderDate, global::System.DateTime dueDate, global::System.Byte status, global::System.Boolean onlineOrderFlag, global::System.String salesOrderNumber, global::System.Decimal subTotal, global::System.Decimal taxAmt, global::System.Decimal freight, global::System.Decimal totalDue, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            SalesOrderHeader salesOrderHeader = new SalesOrderHeader();
            salesOrderHeader.SalesOrderId = salesOrderId;
            salesOrderHeader.RevisionNumber = revisionNumber;
            salesOrderHeader.OrderDate = orderDate;
            salesOrderHeader.DueDate = dueDate;
            salesOrderHeader.Status = status;
            salesOrderHeader.OnlineOrderFlag = onlineOrderFlag;
            salesOrderHeader.SalesOrderNumber = salesOrderNumber;
            salesOrderHeader.SubTotal = subTotal;
            salesOrderHeader.TaxAmt = taxAmt;
            salesOrderHeader.Freight = freight;
            salesOrderHeader.TotalDue = totalDue;
            salesOrderHeader.Rowguid = rowguid;
            salesOrderHeader.ModifiedDate = modifiedDate;
            return salesOrderHeader;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 SalesOrderId
        {
            get
            {
                return _SalesOrderId;
            }
            set
            {
                if (_SalesOrderId != value)
                {
                    OnSalesOrderIdChanging(value);
                    ReportPropertyChanging("SalesOrderId");
                    _SalesOrderId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SalesOrderId");
                    OnSalesOrderIdChanged();
                }
            }
        }
        private global::System.Int32 _SalesOrderId;
        partial void OnSalesOrderIdChanging(global::System.Int32 value);
        partial void OnSalesOrderIdChanged();
    
        /// <summary>
        /// Incremental number to track changes to the sales order over time.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte RevisionNumber
        {
            get
            {
                return _RevisionNumber;
            }
            set
            {
                OnRevisionNumberChanging(value);
                ReportPropertyChanging("RevisionNumber");
                _RevisionNumber = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("RevisionNumber");
                OnRevisionNumberChanged();
            }
        }
        private global::System.Byte _RevisionNumber;
        partial void OnRevisionNumberChanging(global::System.Byte value);
        partial void OnRevisionNumberChanged();
    
        /// <summary>
        /// Dates the sales order was created.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime OrderDate
        {
            get
            {
                return _OrderDate;
            }
            set
            {
                OnOrderDateChanging(value);
                ReportPropertyChanging("OrderDate");
                _OrderDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("OrderDate");
                OnOrderDateChanged();
            }
        }
        private global::System.DateTime _OrderDate;
        partial void OnOrderDateChanging(global::System.DateTime value);
        partial void OnOrderDateChanged();
    
        /// <summary>
        /// Date the order is due to the customer.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime DueDate
        {
            get
            {
                return _DueDate;
            }
            set
            {
                OnDueDateChanging(value);
                ReportPropertyChanging("DueDate");
                _DueDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("DueDate");
                OnDueDateChanged();
            }
        }
        private global::System.DateTime _DueDate;
        partial void OnDueDateChanging(global::System.DateTime value);
        partial void OnDueDateChanged();
    
        /// <summary>
        /// Date the order was shipped to the customer.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> ShipDate
        {
            get
            {
                return _ShipDate;
            }
            set
            {
                OnShipDateChanging(value);
                ReportPropertyChanging("ShipDate");
                _ShipDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ShipDate");
                OnShipDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _ShipDate;
        partial void OnShipDateChanging(Nullable<global::System.DateTime> value);
        partial void OnShipDateChanged();
    
        /// <summary>
        /// Order current status. 1 = In process; 2 = Approved; 3 = Backordered; 4 = Rejected; 5 = Shipped; 6 = Cancelled
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte Status
        {
            get
            {
                return _Status;
            }
            set
            {
                OnStatusChanging(value);
                ReportPropertyChanging("Status");
                _Status = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Status");
                OnStatusChanged();
            }
        }
        private global::System.Byte _Status;
        partial void OnStatusChanging(global::System.Byte value);
        partial void OnStatusChanged();
    
        /// <summary>
        /// 0 = Order placed by sales person. 1 = Order placed online by customer.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Boolean OnlineOrderFlag
        {
            get
            {
                return _OnlineOrderFlag;
            }
            set
            {
                OnOnlineOrderFlagChanging(value);
                ReportPropertyChanging("OnlineOrderFlag");
                _OnlineOrderFlag = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("OnlineOrderFlag");
                OnOnlineOrderFlagChanged();
            }
        }
        private global::System.Boolean _OnlineOrderFlag;
        partial void OnOnlineOrderFlagChanging(global::System.Boolean value);
        partial void OnOnlineOrderFlagChanged();
    
        /// <summary>
        /// Unique sales order identification number.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String SalesOrderNumber
        {
            get
            {
                return _SalesOrderNumber;
            }
            set
            {
                OnSalesOrderNumberChanging(value);
                ReportPropertyChanging("SalesOrderNumber");
                _SalesOrderNumber = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("SalesOrderNumber");
                OnSalesOrderNumberChanged();
            }
        }
        private global::System.String _SalesOrderNumber;
        partial void OnSalesOrderNumberChanging(global::System.String value);
        partial void OnSalesOrderNumberChanged();
    
        /// <summary>
        /// Customer purchase order number reference. 
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String PurchaseOrderNumber
        {
            get
            {
                return _PurchaseOrderNumber;
            }
            set
            {
                OnPurchaseOrderNumberChanging(value);
                ReportPropertyChanging("PurchaseOrderNumber");
                _PurchaseOrderNumber = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("PurchaseOrderNumber");
                OnPurchaseOrderNumberChanged();
            }
        }
        private global::System.String _PurchaseOrderNumber;
        partial void OnPurchaseOrderNumberChanging(global::System.String value);
        partial void OnPurchaseOrderNumberChanged();
    
        /// <summary>
        /// Financial accounting number reference.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String AccountNumber
        {
            get
            {
                return _AccountNumber;
            }
            set
            {
                OnAccountNumberChanging(value);
                ReportPropertyChanging("AccountNumber");
                _AccountNumber = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("AccountNumber");
                OnAccountNumberChanged();
            }
        }
        private global::System.String _AccountNumber;
        partial void OnAccountNumberChanging(global::System.String value);
        partial void OnAccountNumberChanged();
    
        /// <summary>
        /// Approval code provided by the credit card company.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String CreditCardApprovalCode
        {
            get
            {
                return _CreditCardApprovalCode;
            }
            set
            {
                OnCreditCardApprovalCodeChanging(value);
                ReportPropertyChanging("CreditCardApprovalCode");
                _CreditCardApprovalCode = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("CreditCardApprovalCode");
                OnCreditCardApprovalCodeChanged();
            }
        }
        private global::System.String _CreditCardApprovalCode;
        partial void OnCreditCardApprovalCodeChanging(global::System.String value);
        partial void OnCreditCardApprovalCodeChanged();
    
        /// <summary>
        /// Sales subtotal. Computed as SUM(SalesOrderDetail.LineTotal)for the appropriate SalesOrderID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal SubTotal
        {
            get
            {
                return _SubTotal;
            }
            set
            {
                OnSubTotalChanging(value);
                ReportPropertyChanging("SubTotal");
                _SubTotal = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SubTotal");
                OnSubTotalChanged();
            }
        }
        private global::System.Decimal _SubTotal;
        partial void OnSubTotalChanging(global::System.Decimal value);
        partial void OnSubTotalChanged();
    
        /// <summary>
        /// Tax amount.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal TaxAmt
        {
            get
            {
                return _TaxAmt;
            }
            set
            {
                OnTaxAmtChanging(value);
                ReportPropertyChanging("TaxAmt");
                _TaxAmt = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("TaxAmt");
                OnTaxAmtChanged();
            }
        }
        private global::System.Decimal _TaxAmt;
        partial void OnTaxAmtChanging(global::System.Decimal value);
        partial void OnTaxAmtChanged();
    
        /// <summary>
        /// Shipping cost.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal Freight
        {
            get
            {
                return _Freight;
            }
            set
            {
                OnFreightChanging(value);
                ReportPropertyChanging("Freight");
                _Freight = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Freight");
                OnFreightChanged();
            }
        }
        private global::System.Decimal _Freight;
        partial void OnFreightChanging(global::System.Decimal value);
        partial void OnFreightChanged();
    
        /// <summary>
        /// Total due from customer. Computed as Subtotal + TaxAmt + Freight.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal TotalDue
        {
            get
            {
                return _TotalDue;
            }
            set
            {
                OnTotalDueChanging(value);
                ReportPropertyChanging("TotalDue");
                _TotalDue = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("TotalDue");
                OnTotalDueChanged();
            }
        }
        private global::System.Decimal _TotalDue;
        partial void OnTotalDueChanging(global::System.Decimal value);
        partial void OnTotalDueChanged();
    
        /// <summary>
        /// Sales representative comments.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Comment
        {
            get
            {
                return _Comment;
            }
            set
            {
                OnCommentChanging(value);
                ReportPropertyChanging("Comment");
                _Comment = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Comment");
                OnCommentChanged();
            }
        }
        private global::System.String _Comment;
        partial void OnCommentChanging(global::System.String value);
        partial void OnCommentChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderHeader_CustomerId", "Customer")]
        public Customer CustomerIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("MyProject4Model.SalesOrderHeader_CustomerId", "Customer").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("MyProject4Model.SalesOrderHeader_CustomerId", "Customer").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Customer> CustomerIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("MyProject4Model.SalesOrderHeader_CustomerId", "Customer");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Customer>("MyProject4Model.SalesOrderHeader_CustomerId", "Customer", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderHeader_ContactId", "Contact")]
        public Contact ContactIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.SalesOrderHeader_ContactId", "Contact").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.SalesOrderHeader_ContactId", "Contact").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Contact> ContactIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.SalesOrderHeader_ContactId", "Contact");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Contact>("MyProject4Model.SalesOrderHeader_ContactId", "Contact", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderHeader_SalesPersonId", "SalesPerson")]
        public SalesPerson SalesPersonIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesPerson>("MyProject4Model.SalesOrderHeader_SalesPersonId", "SalesPerson").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesPerson>("MyProject4Model.SalesOrderHeader_SalesPersonId", "SalesPerson").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SalesPerson> SalesPersonIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesPerson>("MyProject4Model.SalesOrderHeader_SalesPersonId", "SalesPerson");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SalesPerson>("MyProject4Model.SalesOrderHeader_SalesPersonId", "SalesPerson", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderHeader_TerritoryId", "SalesTerritory")]
        public SalesTerritory TerritoryIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.SalesOrderHeader_TerritoryId", "SalesTerritory").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.SalesOrderHeader_TerritoryId", "SalesTerritory").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SalesTerritory> TerritoryIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.SalesOrderHeader_TerritoryId", "SalesTerritory");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SalesTerritory>("MyProject4Model.SalesOrderHeader_TerritoryId", "SalesTerritory", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderHeader_BillToAddressId", "Address")]
        public Address BillToAddressIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.SalesOrderHeader_BillToAddressId", "Address").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.SalesOrderHeader_BillToAddressId", "Address").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Address> BillToAddressIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.SalesOrderHeader_BillToAddressId", "Address");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Address>("MyProject4Model.SalesOrderHeader_BillToAddressId", "Address", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderHeader_ShipToAddressId", "Address")]
        public Address ShipToAddressIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.SalesOrderHeader_ShipToAddressId", "Address").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.SalesOrderHeader_ShipToAddressId", "Address").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Address> ShipToAddressIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.SalesOrderHeader_ShipToAddressId", "Address");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Address>("MyProject4Model.SalesOrderHeader_ShipToAddressId", "Address", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderHeader_ShipMethodId", "ShipMethod")]
        public ShipMethod ShipMethodIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ShipMethod>("MyProject4Model.SalesOrderHeader_ShipMethodId", "ShipMethod").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ShipMethod>("MyProject4Model.SalesOrderHeader_ShipMethodId", "ShipMethod").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<ShipMethod> ShipMethodIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ShipMethod>("MyProject4Model.SalesOrderHeader_ShipMethodId", "ShipMethod");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<ShipMethod>("MyProject4Model.SalesOrderHeader_ShipMethodId", "ShipMethod", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderHeader_CreditCardId", "CreditCard")]
        public CreditCard CreditCardIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CreditCard>("MyProject4Model.SalesOrderHeader_CreditCardId", "CreditCard").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CreditCard>("MyProject4Model.SalesOrderHeader_CreditCardId", "CreditCard").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<CreditCard> CreditCardIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CreditCard>("MyProject4Model.SalesOrderHeader_CreditCardId", "CreditCard");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<CreditCard>("MyProject4Model.SalesOrderHeader_CreditCardId", "CreditCard", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderHeader_CurrencyRateId", "CurrencyRate")]
        public CurrencyRate CurrencyRateIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CurrencyRate>("MyProject4Model.SalesOrderHeader_CurrencyRateId", "CurrencyRate").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CurrencyRate>("MyProject4Model.SalesOrderHeader_CurrencyRateId", "CurrencyRate").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<CurrencyRate> CurrencyRateIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CurrencyRate>("MyProject4Model.SalesOrderHeader_CurrencyRateId", "CurrencyRate");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<CurrencyRate>("MyProject4Model.SalesOrderHeader_CurrencyRateId", "CurrencyRate", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderHeaderSalesReason_SalesOrderHeader", "SalesOrderHeaderSalesReason")]
        public EntityCollection<SalesOrderHeaderSalesReason> SalesReasonObjectList
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedCollection<SalesOrderHeaderSalesReason>("MyProject4Model.SalesOrderHeaderSalesReason_SalesOrderHeader", "SalesOrderHeaderSalesReason");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedCollection<SalesOrderHeaderSalesReason>("MyProject4Model.SalesOrderHeaderSalesReason_SalesOrderHeader", "SalesOrderHeaderSalesReason", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Cross-reference table mapping sales orders to sales reason codes.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="SalesOrderHeaderSalesReason")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class SalesOrderHeaderSalesReason : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new SalesOrderHeaderSalesReason object.
        /// </summary>
        /// <param name="salesOrderId">Initial value of the SalesOrderId property.</param>
        /// <param name="salesReasonId">Initial value of the SalesReasonId property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static SalesOrderHeaderSalesReason CreateSalesOrderHeaderSalesReason(global::System.Int32 salesOrderId, global::System.Int32 salesReasonId, global::System.DateTime modifiedDate)
        {
            SalesOrderHeaderSalesReason salesOrderHeaderSalesReason = new SalesOrderHeaderSalesReason();
            salesOrderHeaderSalesReason.SalesOrderId = salesOrderId;
            salesOrderHeaderSalesReason.SalesReasonId = salesReasonId;
            salesOrderHeaderSalesReason.ModifiedDate = modifiedDate;
            return salesOrderHeaderSalesReason;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 SalesOrderId
        {
            get
            {
                return _SalesOrderId;
            }
            set
            {
                if (_SalesOrderId != value)
                {
                    OnSalesOrderIdChanging(value);
                    ReportPropertyChanging("SalesOrderId");
                    _SalesOrderId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SalesOrderId");
                    OnSalesOrderIdChanged();
                }
            }
        }
        private global::System.Int32 _SalesOrderId;
        partial void OnSalesOrderIdChanging(global::System.Int32 value);
        partial void OnSalesOrderIdChanged();
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 SalesReasonId
        {
            get
            {
                return _SalesReasonId;
            }
            set
            {
                if (_SalesReasonId != value)
                {
                    OnSalesReasonIdChanging(value);
                    ReportPropertyChanging("SalesReasonId");
                    _SalesReasonId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SalesReasonId");
                    OnSalesReasonIdChanged();
                }
            }
        }
        private global::System.Int32 _SalesReasonId;
        partial void OnSalesReasonIdChanging(global::System.Int32 value);
        partial void OnSalesReasonIdChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderHeaderSalesReason_SalesOrderHeader", "SalesOrderHeader")]
        public SalesOrderHeader SalesOrderHeaderObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesOrderHeader>("MyProject4Model.SalesOrderHeaderSalesReason_SalesOrderHeader", "SalesOrderHeader").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesOrderHeader>("MyProject4Model.SalesOrderHeaderSalesReason_SalesOrderHeader", "SalesOrderHeader").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SalesOrderHeader> SalesOrderHeaderObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesOrderHeader>("MyProject4Model.SalesOrderHeaderSalesReason_SalesOrderHeader", "SalesOrderHeader");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SalesOrderHeader>("MyProject4Model.SalesOrderHeaderSalesReason_SalesOrderHeader", "SalesOrderHeader", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesOrderHeaderSalesReason_SalesReasonId", "SalesReason")]
        public SalesReason SalesReasonIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesReason>("MyProject4Model.SalesOrderHeaderSalesReason_SalesReasonId", "SalesReason").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesReason>("MyProject4Model.SalesOrderHeaderSalesReason_SalesReasonId", "SalesReason").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SalesReason> SalesReasonIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesReason>("MyProject4Model.SalesOrderHeaderSalesReason_SalesReasonId", "SalesReason");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SalesReason>("MyProject4Model.SalesOrderHeaderSalesReason_SalesReasonId", "SalesReason", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Sales representative current information.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="SalesPerson")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class SalesPerson : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new SalesPerson object.
        /// </summary>
        /// <param name="salesPersonId">Initial value of the SalesPersonId property.</param>
        /// <param name="bonus">Initial value of the Bonus property.</param>
        /// <param name="commissionPct">Initial value of the CommissionPct property.</param>
        /// <param name="salesYtd">Initial value of the SalesYtd property.</param>
        /// <param name="salesLastYear">Initial value of the SalesLastYear property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static SalesPerson CreateSalesPerson(global::System.Int32 salesPersonId, global::System.Decimal bonus, global::System.Decimal commissionPct, global::System.Decimal salesYtd, global::System.Decimal salesLastYear, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            SalesPerson salesPerson = new SalesPerson();
            salesPerson.SalesPersonId = salesPersonId;
            salesPerson.Bonus = bonus;
            salesPerson.CommissionPct = commissionPct;
            salesPerson.SalesYtd = salesYtd;
            salesPerson.SalesLastYear = salesLastYear;
            salesPerson.Rowguid = rowguid;
            salesPerson.ModifiedDate = modifiedDate;
            return salesPerson;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 SalesPersonId
        {
            get
            {
                return _SalesPersonId;
            }
            set
            {
                if (_SalesPersonId != value)
                {
                    OnSalesPersonIdChanging(value);
                    ReportPropertyChanging("SalesPersonId");
                    _SalesPersonId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SalesPersonId");
                    OnSalesPersonIdChanged();
                }
            }
        }
        private global::System.Int32 _SalesPersonId;
        partial void OnSalesPersonIdChanging(global::System.Int32 value);
        partial void OnSalesPersonIdChanged();
    
        /// <summary>
        /// Projected yearly sales.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.Decimal> SalesQuota
        {
            get
            {
                return _SalesQuota;
            }
            set
            {
                OnSalesQuotaChanging(value);
                ReportPropertyChanging("SalesQuota");
                _SalesQuota = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SalesQuota");
                OnSalesQuotaChanged();
            }
        }
        private Nullable<global::System.Decimal> _SalesQuota;
        partial void OnSalesQuotaChanging(Nullable<global::System.Decimal> value);
        partial void OnSalesQuotaChanged();
    
        /// <summary>
        /// Bonus due if quota is met.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal Bonus
        {
            get
            {
                return _Bonus;
            }
            set
            {
                OnBonusChanging(value);
                ReportPropertyChanging("Bonus");
                _Bonus = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Bonus");
                OnBonusChanged();
            }
        }
        private global::System.Decimal _Bonus;
        partial void OnBonusChanging(global::System.Decimal value);
        partial void OnBonusChanged();
    
        /// <summary>
        /// Commision percent received per sale.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal CommissionPct
        {
            get
            {
                return _CommissionPct;
            }
            set
            {
                OnCommissionPctChanging(value);
                ReportPropertyChanging("CommissionPct");
                _CommissionPct = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("CommissionPct");
                OnCommissionPctChanged();
            }
        }
        private global::System.Decimal _CommissionPct;
        partial void OnCommissionPctChanging(global::System.Decimal value);
        partial void OnCommissionPctChanged();
    
        /// <summary>
        /// Sales total year to date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal SalesYtd
        {
            get
            {
                return _SalesYtd;
            }
            set
            {
                OnSalesYtdChanging(value);
                ReportPropertyChanging("SalesYtd");
                _SalesYtd = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SalesYtd");
                OnSalesYtdChanged();
            }
        }
        private global::System.Decimal _SalesYtd;
        partial void OnSalesYtdChanging(global::System.Decimal value);
        partial void OnSalesYtdChanged();
    
        /// <summary>
        /// Sales total of previous year.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal SalesLastYear
        {
            get
            {
                return _SalesLastYear;
            }
            set
            {
                OnSalesLastYearChanging(value);
                ReportPropertyChanging("SalesLastYear");
                _SalesLastYear = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SalesLastYear");
                OnSalesLastYearChanged();
            }
        }
        private global::System.Decimal _SalesLastYear;
        partial void OnSalesLastYearChanging(global::System.Decimal value);
        partial void OnSalesLastYearChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesPerson_SalesPersonId", "Employee")]
        public Employee SalesPersonIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.SalesPerson_SalesPersonId", "Employee").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.SalesPerson_SalesPersonId", "Employee").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Employee> SalesPersonIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Employee>("MyProject4Model.SalesPerson_SalesPersonId", "Employee");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Employee>("MyProject4Model.SalesPerson_SalesPersonId", "Employee", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesPerson_TerritoryId", "SalesTerritory")]
        public SalesTerritory TerritoryIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.SalesPerson_TerritoryId", "SalesTerritory").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.SalesPerson_TerritoryId", "SalesTerritory").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SalesTerritory> TerritoryIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.SalesPerson_TerritoryId", "SalesTerritory");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SalesTerritory>("MyProject4Model.SalesPerson_TerritoryId", "SalesTerritory", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Sales performance tracking.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="SalesPersonQuotaHistory")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class SalesPersonQuotaHistory : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new SalesPersonQuotaHistory object.
        /// </summary>
        /// <param name="salesPersonId">Initial value of the SalesPersonId property.</param>
        /// <param name="quotaDate">Initial value of the QuotaDate property.</param>
        /// <param name="salesQuota">Initial value of the SalesQuota property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static SalesPersonQuotaHistory CreateSalesPersonQuotaHistory(global::System.Int32 salesPersonId, global::System.DateTime quotaDate, global::System.Decimal salesQuota, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            SalesPersonQuotaHistory salesPersonQuotaHistory = new SalesPersonQuotaHistory();
            salesPersonQuotaHistory.SalesPersonId = salesPersonId;
            salesPersonQuotaHistory.QuotaDate = quotaDate;
            salesPersonQuotaHistory.SalesQuota = salesQuota;
            salesPersonQuotaHistory.Rowguid = rowguid;
            salesPersonQuotaHistory.ModifiedDate = modifiedDate;
            return salesPersonQuotaHistory;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Sales person identification number. Foreign key to SalesPerson.SalesPersonID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 SalesPersonId
        {
            get
            {
                return _SalesPersonId;
            }
            set
            {
                if (_SalesPersonId != value)
                {
                    OnSalesPersonIdChanging(value);
                    ReportPropertyChanging("SalesPersonId");
                    _SalesPersonId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SalesPersonId");
                    OnSalesPersonIdChanged();
                }
            }
        }
        private global::System.Int32 _SalesPersonId;
        partial void OnSalesPersonIdChanging(global::System.Int32 value);
        partial void OnSalesPersonIdChanged();
    
        /// <summary>
        /// Sales quota date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime QuotaDate
        {
            get
            {
                return _QuotaDate;
            }
            set
            {
                if (_QuotaDate != value)
                {
                    OnQuotaDateChanging(value);
                    ReportPropertyChanging("QuotaDate");
                    _QuotaDate = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("QuotaDate");
                    OnQuotaDateChanged();
                }
            }
        }
        private global::System.DateTime _QuotaDate;
        partial void OnQuotaDateChanging(global::System.DateTime value);
        partial void OnQuotaDateChanged();
    
        /// <summary>
        /// Sales quota amount.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal SalesQuota
        {
            get
            {
                return _SalesQuota;
            }
            set
            {
                OnSalesQuotaChanging(value);
                ReportPropertyChanging("SalesQuota");
                _SalesQuota = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SalesQuota");
                OnSalesQuotaChanged();
            }
        }
        private global::System.Decimal _SalesQuota;
        partial void OnSalesQuotaChanging(global::System.Decimal value);
        partial void OnSalesQuotaChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesPersonQuotaHistory_SalesPersonId", "SalesPerson")]
        public SalesPerson SalesPersonIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesPerson>("MyProject4Model.SalesPersonQuotaHistory_SalesPersonId", "SalesPerson").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesPerson>("MyProject4Model.SalesPersonQuotaHistory_SalesPersonId", "SalesPerson").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SalesPerson> SalesPersonIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesPerson>("MyProject4Model.SalesPersonQuotaHistory_SalesPersonId", "SalesPerson");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SalesPerson>("MyProject4Model.SalesPersonQuotaHistory_SalesPersonId", "SalesPerson", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Lookup table of customer purchase reasons.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="SalesReason")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class SalesReason : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new SalesReason object.
        /// </summary>
        /// <param name="salesReasonId">Initial value of the SalesReasonId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="reasonType">Initial value of the ReasonType property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static SalesReason CreateSalesReason(global::System.Int32 salesReasonId, global::System.String name, global::System.String reasonType, global::System.DateTime modifiedDate)
        {
            SalesReason salesReason = new SalesReason();
            salesReason.SalesReasonId = salesReasonId;
            salesReason.Name = name;
            salesReason.ReasonType = reasonType;
            salesReason.ModifiedDate = modifiedDate;
            return salesReason;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 SalesReasonId
        {
            get
            {
                return _SalesReasonId;
            }
            set
            {
                if (_SalesReasonId != value)
                {
                    OnSalesReasonIdChanging(value);
                    ReportPropertyChanging("SalesReasonId");
                    _SalesReasonId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SalesReasonId");
                    OnSalesReasonIdChanged();
                }
            }
        }
        private global::System.Int32 _SalesReasonId;
        partial void OnSalesReasonIdChanging(global::System.Int32 value);
        partial void OnSalesReasonIdChanged();
    
        /// <summary>
        /// Sales reason description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Category the sales reason belongs to.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String ReasonType
        {
            get
            {
                return _ReasonType;
            }
            set
            {
                OnReasonTypeChanging(value);
                ReportPropertyChanging("ReasonType");
                _ReasonType = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("ReasonType");
                OnReasonTypeChanged();
            }
        }
        private global::System.String _ReasonType;
        partial void OnReasonTypeChanging(global::System.String value);
        partial void OnReasonTypeChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Tax rate lookup table.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="SalesTaxRate")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class SalesTaxRate : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new SalesTaxRate object.
        /// </summary>
        /// <param name="salesTaxRateId">Initial value of the SalesTaxRateId property.</param>
        /// <param name="taxType">Initial value of the TaxType property.</param>
        /// <param name="taxRate">Initial value of the TaxRate property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static SalesTaxRate CreateSalesTaxRate(global::System.Int32 salesTaxRateId, global::System.Byte taxType, global::System.Decimal taxRate, global::System.String name, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            SalesTaxRate salesTaxRate = new SalesTaxRate();
            salesTaxRate.SalesTaxRateId = salesTaxRateId;
            salesTaxRate.TaxType = taxType;
            salesTaxRate.TaxRate = taxRate;
            salesTaxRate.Name = name;
            salesTaxRate.Rowguid = rowguid;
            salesTaxRate.ModifiedDate = modifiedDate;
            return salesTaxRate;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 SalesTaxRateId
        {
            get
            {
                return _SalesTaxRateId;
            }
            set
            {
                if (_SalesTaxRateId != value)
                {
                    OnSalesTaxRateIdChanging(value);
                    ReportPropertyChanging("SalesTaxRateId");
                    _SalesTaxRateId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SalesTaxRateId");
                    OnSalesTaxRateIdChanged();
                }
            }
        }
        private global::System.Int32 _SalesTaxRateId;
        partial void OnSalesTaxRateIdChanging(global::System.Int32 value);
        partial void OnSalesTaxRateIdChanged();
    
        /// <summary>
        /// 1 = Tax applied to retail transactions, 2 = Tax applied to wholesale transactions, 3 = Tax applied to all sales (retail and wholesale) transactions.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte TaxType
        {
            get
            {
                return _TaxType;
            }
            set
            {
                OnTaxTypeChanging(value);
                ReportPropertyChanging("TaxType");
                _TaxType = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("TaxType");
                OnTaxTypeChanged();
            }
        }
        private global::System.Byte _TaxType;
        partial void OnTaxTypeChanging(global::System.Byte value);
        partial void OnTaxTypeChanged();
    
        /// <summary>
        /// Tax rate amount.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal TaxRate
        {
            get
            {
                return _TaxRate;
            }
            set
            {
                OnTaxRateChanging(value);
                ReportPropertyChanging("TaxRate");
                _TaxRate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("TaxRate");
                OnTaxRateChanged();
            }
        }
        private global::System.Decimal _TaxRate;
        partial void OnTaxRateChanging(global::System.Decimal value);
        partial void OnTaxRateChanged();
    
        /// <summary>
        /// Tax rate description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesTaxRate_StateProvinceId", "StateProvince")]
        public StateProvince StateProvinceIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<StateProvince>("MyProject4Model.SalesTaxRate_StateProvinceId", "StateProvince").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<StateProvince>("MyProject4Model.SalesTaxRate_StateProvinceId", "StateProvince").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<StateProvince> StateProvinceIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<StateProvince>("MyProject4Model.SalesTaxRate_StateProvinceId", "StateProvince");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<StateProvince>("MyProject4Model.SalesTaxRate_StateProvinceId", "StateProvince", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Sales territory lookup table.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="SalesTerritory")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class SalesTerritory : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new SalesTerritory object.
        /// </summary>
        /// <param name="territoryId">Initial value of the TerritoryId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="countryRegionCode">Initial value of the CountryRegionCode property.</param>
        /// <param name="group">Initial value of the Group property.</param>
        /// <param name="salesYtd">Initial value of the SalesYtd property.</param>
        /// <param name="salesLastYear">Initial value of the SalesLastYear property.</param>
        /// <param name="costYtd">Initial value of the CostYtd property.</param>
        /// <param name="costLastYear">Initial value of the CostLastYear property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static SalesTerritory CreateSalesTerritory(global::System.Int32 territoryId, global::System.String name, global::System.String countryRegionCode, global::System.String group, global::System.Decimal salesYtd, global::System.Decimal salesLastYear, global::System.Decimal costYtd, global::System.Decimal costLastYear, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            SalesTerritory salesTerritory = new SalesTerritory();
            salesTerritory.TerritoryId = territoryId;
            salesTerritory.Name = name;
            salesTerritory.CountryRegionCode = countryRegionCode;
            salesTerritory.Group = group;
            salesTerritory.SalesYtd = salesYtd;
            salesTerritory.SalesLastYear = salesLastYear;
            salesTerritory.CostYtd = costYtd;
            salesTerritory.CostLastYear = costLastYear;
            salesTerritory.Rowguid = rowguid;
            salesTerritory.ModifiedDate = modifiedDate;
            return salesTerritory;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 TerritoryId
        {
            get
            {
                return _TerritoryId;
            }
            set
            {
                if (_TerritoryId != value)
                {
                    OnTerritoryIdChanging(value);
                    ReportPropertyChanging("TerritoryId");
                    _TerritoryId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("TerritoryId");
                    OnTerritoryIdChanged();
                }
            }
        }
        private global::System.Int32 _TerritoryId;
        partial void OnTerritoryIdChanging(global::System.Int32 value);
        partial void OnTerritoryIdChanged();
    
        /// <summary>
        /// Sales territory description
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// ISO standard country or region code. Foreign key to CountryRegion.CountryRegionCode. 
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String CountryRegionCode
        {
            get
            {
                return _CountryRegionCode;
            }
            set
            {
                OnCountryRegionCodeChanging(value);
                ReportPropertyChanging("CountryRegionCode");
                _CountryRegionCode = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("CountryRegionCode");
                OnCountryRegionCodeChanged();
            }
        }
        private global::System.String _CountryRegionCode;
        partial void OnCountryRegionCodeChanging(global::System.String value);
        partial void OnCountryRegionCodeChanged();
    
        /// <summary>
        /// Geographic area to which the sales territory belong.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Group
        {
            get
            {
                return _Group;
            }
            set
            {
                OnGroupChanging(value);
                ReportPropertyChanging("Group");
                _Group = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Group");
                OnGroupChanged();
            }
        }
        private global::System.String _Group;
        partial void OnGroupChanging(global::System.String value);
        partial void OnGroupChanged();
    
        /// <summary>
        /// Sales in the territory year to date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal SalesYtd
        {
            get
            {
                return _SalesYtd;
            }
            set
            {
                OnSalesYtdChanging(value);
                ReportPropertyChanging("SalesYtd");
                _SalesYtd = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SalesYtd");
                OnSalesYtdChanged();
            }
        }
        private global::System.Decimal _SalesYtd;
        partial void OnSalesYtdChanging(global::System.Decimal value);
        partial void OnSalesYtdChanged();
    
        /// <summary>
        /// Sales in the territory the previous year.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal SalesLastYear
        {
            get
            {
                return _SalesLastYear;
            }
            set
            {
                OnSalesLastYearChanging(value);
                ReportPropertyChanging("SalesLastYear");
                _SalesLastYear = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("SalesLastYear");
                OnSalesLastYearChanged();
            }
        }
        private global::System.Decimal _SalesLastYear;
        partial void OnSalesLastYearChanging(global::System.Decimal value);
        partial void OnSalesLastYearChanged();
    
        /// <summary>
        /// Business costs in the territory year to date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal CostYtd
        {
            get
            {
                return _CostYtd;
            }
            set
            {
                OnCostYtdChanging(value);
                ReportPropertyChanging("CostYtd");
                _CostYtd = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("CostYtd");
                OnCostYtdChanged();
            }
        }
        private global::System.Decimal _CostYtd;
        partial void OnCostYtdChanging(global::System.Decimal value);
        partial void OnCostYtdChanged();
    
        /// <summary>
        /// Business costs in the territory the previous year.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal CostLastYear
        {
            get
            {
                return _CostLastYear;
            }
            set
            {
                OnCostLastYearChanging(value);
                ReportPropertyChanging("CostLastYear");
                _CostLastYear = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("CostLastYear");
                OnCostLastYearChanged();
            }
        }
        private global::System.Decimal _CostLastYear;
        partial void OnCostLastYearChanging(global::System.Decimal value);
        partial void OnCostLastYearChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Sales representative transfers to other sales territories.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="SalesTerritoryHistory")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class SalesTerritoryHistory : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new SalesTerritoryHistory object.
        /// </summary>
        /// <param name="salesPersonId">Initial value of the SalesPersonId property.</param>
        /// <param name="startDate">Initial value of the StartDate property.</param>
        /// <param name="territoryId">Initial value of the TerritoryId property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static SalesTerritoryHistory CreateSalesTerritoryHistory(global::System.Int32 salesPersonId, global::System.DateTime startDate, global::System.Int32 territoryId, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            SalesTerritoryHistory salesTerritoryHistory = new SalesTerritoryHistory();
            salesTerritoryHistory.SalesPersonId = salesPersonId;
            salesTerritoryHistory.StartDate = startDate;
            salesTerritoryHistory.TerritoryId = territoryId;
            salesTerritoryHistory.Rowguid = rowguid;
            salesTerritoryHistory.ModifiedDate = modifiedDate;
            return salesTerritoryHistory;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Primary key for SalesTerritoryHistory records.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 SalesPersonId
        {
            get
            {
                return _SalesPersonId;
            }
            set
            {
                if (_SalesPersonId != value)
                {
                    OnSalesPersonIdChanging(value);
                    ReportPropertyChanging("SalesPersonId");
                    _SalesPersonId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SalesPersonId");
                    OnSalesPersonIdChanged();
                }
            }
        }
        private global::System.Int32 _SalesPersonId;
        partial void OnSalesPersonIdChanging(global::System.Int32 value);
        partial void OnSalesPersonIdChanged();
    
        /// <summary>
        /// Date the sales representive started work in the territory.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime StartDate
        {
            get
            {
                return _StartDate;
            }
            set
            {
                if (_StartDate != value)
                {
                    OnStartDateChanging(value);
                    ReportPropertyChanging("StartDate");
                    _StartDate = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("StartDate");
                    OnStartDateChanged();
                }
            }
        }
        private global::System.DateTime _StartDate;
        partial void OnStartDateChanging(global::System.DateTime value);
        partial void OnStartDateChanged();
    
        /// <summary>
        /// Territory identification number. Foreign key to SalesTerritory.SalesTerritoryID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 TerritoryId
        {
            get
            {
                return _TerritoryId;
            }
            set
            {
                if (_TerritoryId != value)
                {
                    OnTerritoryIdChanging(value);
                    ReportPropertyChanging("TerritoryId");
                    _TerritoryId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("TerritoryId");
                    OnTerritoryIdChanged();
                }
            }
        }
        private global::System.Int32 _TerritoryId;
        partial void OnTerritoryIdChanging(global::System.Int32 value);
        partial void OnTerritoryIdChanged();
    
        /// <summary>
        /// Date the sales representative left work in the territory.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> EndDate
        {
            get
            {
                return _EndDate;
            }
            set
            {
                OnEndDateChanging(value);
                ReportPropertyChanging("EndDate");
                _EndDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("EndDate");
                OnEndDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _EndDate;
        partial void OnEndDateChanging(Nullable<global::System.DateTime> value);
        partial void OnEndDateChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesTerritoryHistory_SalesPersonId", "SalesPerson")]
        public SalesPerson SalesPersonIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesPerson>("MyProject4Model.SalesTerritoryHistory_SalesPersonId", "SalesPerson").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesPerson>("MyProject4Model.SalesTerritoryHistory_SalesPersonId", "SalesPerson").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SalesPerson> SalesPersonIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesPerson>("MyProject4Model.SalesTerritoryHistory_SalesPersonId", "SalesPerson");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SalesPerson>("MyProject4Model.SalesTerritoryHistory_SalesPersonId", "SalesPerson", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SalesTerritoryHistory_TerritoryId", "SalesTerritory")]
        public SalesTerritory TerritoryIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.SalesTerritoryHistory_TerritoryId", "SalesTerritory").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.SalesTerritoryHistory_TerritoryId", "SalesTerritory").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SalesTerritory> TerritoryIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.SalesTerritoryHistory_TerritoryId", "SalesTerritory");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SalesTerritory>("MyProject4Model.SalesTerritoryHistory_TerritoryId", "SalesTerritory", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Manufacturing failure reasons lookup table.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ScrapReason")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ScrapReason : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ScrapReason object.
        /// </summary>
        /// <param name="scrapReasonId">Initial value of the ScrapReasonId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ScrapReason CreateScrapReason(global::System.Int16 scrapReasonId, global::System.String name, global::System.DateTime modifiedDate)
        {
            ScrapReason scrapReason = new ScrapReason();
            scrapReason.ScrapReasonId = scrapReasonId;
            scrapReason.Name = name;
            scrapReason.ModifiedDate = modifiedDate;
            return scrapReason;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 ScrapReasonId
        {
            get
            {
                return _ScrapReasonId;
            }
            set
            {
                if (_ScrapReasonId != value)
                {
                    OnScrapReasonIdChanging(value);
                    ReportPropertyChanging("ScrapReasonId");
                    _ScrapReasonId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ScrapReasonId");
                    OnScrapReasonIdChanged();
                }
            }
        }
        private global::System.Int16 _ScrapReasonId;
        partial void OnScrapReasonIdChanging(global::System.Int16 value);
        partial void OnScrapReasonIdChanged();
    
        /// <summary>
        /// Failure description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Work shift lookup table.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Shift")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Shift : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Shift object.
        /// </summary>
        /// <param name="shiftId">Initial value of the ShiftId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="startTime">Initial value of the StartTime property.</param>
        /// <param name="endTime">Initial value of the EndTime property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Shift CreateShift(global::System.Byte shiftId, global::System.String name, global::System.DateTime startTime, global::System.DateTime endTime, global::System.DateTime modifiedDate)
        {
            Shift shift = new Shift();
            shift.ShiftId = shiftId;
            shift.Name = name;
            shift.StartTime = startTime;
            shift.EndTime = endTime;
            shift.ModifiedDate = modifiedDate;
            return shift;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte ShiftId
        {
            get
            {
                return _ShiftId;
            }
            set
            {
                if (_ShiftId != value)
                {
                    OnShiftIdChanging(value);
                    ReportPropertyChanging("ShiftId");
                    _ShiftId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ShiftId");
                    OnShiftIdChanged();
                }
            }
        }
        private global::System.Byte _ShiftId;
        partial void OnShiftIdChanging(global::System.Byte value);
        partial void OnShiftIdChanged();
    
        /// <summary>
        /// Shift description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Shift start time.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime StartTime
        {
            get
            {
                return _StartTime;
            }
            set
            {
                OnStartTimeChanging(value);
                ReportPropertyChanging("StartTime");
                _StartTime = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("StartTime");
                OnStartTimeChanged();
            }
        }
        private global::System.DateTime _StartTime;
        partial void OnStartTimeChanging(global::System.DateTime value);
        partial void OnStartTimeChanged();
    
        /// <summary>
        /// Shift end time.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime EndTime
        {
            get
            {
                return _EndTime;
            }
            set
            {
                OnEndTimeChanging(value);
                ReportPropertyChanging("EndTime");
                _EndTime = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("EndTime");
                OnEndTimeChanged();
            }
        }
        private global::System.DateTime _EndTime;
        partial void OnEndTimeChanging(global::System.DateTime value);
        partial void OnEndTimeChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Shipping company lookup table.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ShipMethod")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ShipMethod : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ShipMethod object.
        /// </summary>
        /// <param name="shipMethodId">Initial value of the ShipMethodId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="shipBase">Initial value of the ShipBase property.</param>
        /// <param name="shipRate">Initial value of the ShipRate property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ShipMethod CreateShipMethod(global::System.Int32 shipMethodId, global::System.String name, global::System.Decimal shipBase, global::System.Decimal shipRate, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            ShipMethod shipMethod = new ShipMethod();
            shipMethod.ShipMethodId = shipMethodId;
            shipMethod.Name = name;
            shipMethod.ShipBase = shipBase;
            shipMethod.ShipRate = shipRate;
            shipMethod.Rowguid = rowguid;
            shipMethod.ModifiedDate = modifiedDate;
            return shipMethod;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ShipMethodId
        {
            get
            {
                return _ShipMethodId;
            }
            set
            {
                if (_ShipMethodId != value)
                {
                    OnShipMethodIdChanging(value);
                    ReportPropertyChanging("ShipMethodId");
                    _ShipMethodId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ShipMethodId");
                    OnShipMethodIdChanged();
                }
            }
        }
        private global::System.Int32 _ShipMethodId;
        partial void OnShipMethodIdChanging(global::System.Int32 value);
        partial void OnShipMethodIdChanged();
    
        /// <summary>
        /// Shipping company name.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Minimum shipping charge.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal ShipBase
        {
            get
            {
                return _ShipBase;
            }
            set
            {
                OnShipBaseChanging(value);
                ReportPropertyChanging("ShipBase");
                _ShipBase = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ShipBase");
                OnShipBaseChanged();
            }
        }
        private global::System.Decimal _ShipBase;
        partial void OnShipBaseChanging(global::System.Decimal value);
        partial void OnShipBaseChanged();
    
        /// <summary>
        /// Shipping charge per pound.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal ShipRate
        {
            get
            {
                return _ShipRate;
            }
            set
            {
                OnShipRateChanging(value);
                ReportPropertyChanging("ShipRate");
                _ShipRate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ShipRate");
                OnShipRateChanged();
            }
        }
        private global::System.Decimal _ShipRate;
        partial void OnShipRateChanging(global::System.Decimal value);
        partial void OnShipRateChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Contains online customer orders until the order is submitted or cancelled.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="ShoppingCartItem")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class ShoppingCartItem : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new ShoppingCartItem object.
        /// </summary>
        /// <param name="shoppingCartItemId">Initial value of the ShoppingCartItemId property.</param>
        /// <param name="shoppingCartId">Initial value of the ShoppingCartId property.</param>
        /// <param name="quantity">Initial value of the Quantity property.</param>
        /// <param name="dateCreated">Initial value of the DateCreated property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static ShoppingCartItem CreateShoppingCartItem(global::System.Int32 shoppingCartItemId, global::System.String shoppingCartId, global::System.Int32 quantity, global::System.DateTime dateCreated, global::System.DateTime modifiedDate)
        {
            ShoppingCartItem shoppingCartItem = new ShoppingCartItem();
            shoppingCartItem.ShoppingCartItemId = shoppingCartItemId;
            shoppingCartItem.ShoppingCartId = shoppingCartId;
            shoppingCartItem.Quantity = quantity;
            shoppingCartItem.DateCreated = dateCreated;
            shoppingCartItem.ModifiedDate = modifiedDate;
            return shoppingCartItem;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ShoppingCartItemId
        {
            get
            {
                return _ShoppingCartItemId;
            }
            set
            {
                if (_ShoppingCartItemId != value)
                {
                    OnShoppingCartItemIdChanging(value);
                    ReportPropertyChanging("ShoppingCartItemId");
                    _ShoppingCartItemId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ShoppingCartItemId");
                    OnShoppingCartItemIdChanged();
                }
            }
        }
        private global::System.Int32 _ShoppingCartItemId;
        partial void OnShoppingCartItemIdChanging(global::System.Int32 value);
        partial void OnShoppingCartItemIdChanged();
    
        /// <summary>
        /// Shopping cart identification number.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String ShoppingCartId
        {
            get
            {
                return _ShoppingCartId;
            }
            set
            {
                OnShoppingCartIdChanging(value);
                ReportPropertyChanging("ShoppingCartId");
                _ShoppingCartId = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("ShoppingCartId");
                OnShoppingCartIdChanged();
            }
        }
        private global::System.String _ShoppingCartId;
        partial void OnShoppingCartIdChanging(global::System.String value);
        partial void OnShoppingCartIdChanged();
    
        /// <summary>
        /// Product quantity ordered.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 Quantity
        {
            get
            {
                return _Quantity;
            }
            set
            {
                OnQuantityChanging(value);
                ReportPropertyChanging("Quantity");
                _Quantity = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Quantity");
                OnQuantityChanged();
            }
        }
        private global::System.Int32 _Quantity;
        partial void OnQuantityChanging(global::System.Int32 value);
        partial void OnQuantityChanged();
    
        /// <summary>
        /// Date the time the record was created.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime DateCreated
        {
            get
            {
                return _DateCreated;
            }
            set
            {
                OnDateCreatedChanging(value);
                ReportPropertyChanging("DateCreated");
                _DateCreated = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("DateCreated");
                OnDateCreatedChanged();
            }
        }
        private global::System.DateTime _DateCreated;
        partial void OnDateCreatedChanging(global::System.DateTime value);
        partial void OnDateCreatedChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "ShoppingCartItem_ProductId", "Product")]
        public Product ProductIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ShoppingCartItem_ProductId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ShoppingCartItem_ProductId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.ShoppingCartItem_ProductId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.ShoppingCartItem_ProductId", "Product", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Sale discounts lookup table.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="SpecialOffer")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class SpecialOffer : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new SpecialOffer object.
        /// </summary>
        /// <param name="specialOfferId">Initial value of the SpecialOfferId property.</param>
        /// <param name="description">Initial value of the Description property.</param>
        /// <param name="discountPct">Initial value of the DiscountPct property.</param>
        /// <param name="type">Initial value of the Type property.</param>
        /// <param name="category">Initial value of the Category property.</param>
        /// <param name="startDate">Initial value of the StartDate property.</param>
        /// <param name="endDate">Initial value of the EndDate property.</param>
        /// <param name="minQty">Initial value of the MinQty property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static SpecialOffer CreateSpecialOffer(global::System.Int32 specialOfferId, global::System.String description, global::System.Decimal discountPct, global::System.String type, global::System.String category, global::System.DateTime startDate, global::System.DateTime endDate, global::System.Int32 minQty, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            SpecialOffer specialOffer = new SpecialOffer();
            specialOffer.SpecialOfferId = specialOfferId;
            specialOffer.Description = description;
            specialOffer.DiscountPct = discountPct;
            specialOffer.Type = type;
            specialOffer.Category = category;
            specialOffer.StartDate = startDate;
            specialOffer.EndDate = endDate;
            specialOffer.MinQty = minQty;
            specialOffer.Rowguid = rowguid;
            specialOffer.ModifiedDate = modifiedDate;
            return specialOffer;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 SpecialOfferId
        {
            get
            {
                return _SpecialOfferId;
            }
            set
            {
                if (_SpecialOfferId != value)
                {
                    OnSpecialOfferIdChanging(value);
                    ReportPropertyChanging("SpecialOfferId");
                    _SpecialOfferId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SpecialOfferId");
                    OnSpecialOfferIdChanged();
                }
            }
        }
        private global::System.Int32 _SpecialOfferId;
        partial void OnSpecialOfferIdChanging(global::System.Int32 value);
        partial void OnSpecialOfferIdChanged();
    
        /// <summary>
        /// Discount description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Description
        {
            get
            {
                return _Description;
            }
            set
            {
                OnDescriptionChanging(value);
                ReportPropertyChanging("Description");
                _Description = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Description");
                OnDescriptionChanged();
            }
        }
        private global::System.String _Description;
        partial void OnDescriptionChanging(global::System.String value);
        partial void OnDescriptionChanged();
    
        /// <summary>
        /// Discount precentage.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal DiscountPct
        {
            get
            {
                return _DiscountPct;
            }
            set
            {
                OnDiscountPctChanging(value);
                ReportPropertyChanging("DiscountPct");
                _DiscountPct = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("DiscountPct");
                OnDiscountPctChanged();
            }
        }
        private global::System.Decimal _DiscountPct;
        partial void OnDiscountPctChanging(global::System.Decimal value);
        partial void OnDiscountPctChanged();
    
        /// <summary>
        /// Discount type category.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Type
        {
            get
            {
                return _Type;
            }
            set
            {
                OnTypeChanging(value);
                ReportPropertyChanging("Type");
                _Type = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Type");
                OnTypeChanged();
            }
        }
        private global::System.String _Type;
        partial void OnTypeChanging(global::System.String value);
        partial void OnTypeChanged();
    
        /// <summary>
        /// Group the discount applies to such as Reseller or Customer.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Category
        {
            get
            {
                return _Category;
            }
            set
            {
                OnCategoryChanging(value);
                ReportPropertyChanging("Category");
                _Category = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Category");
                OnCategoryChanged();
            }
        }
        private global::System.String _Category;
        partial void OnCategoryChanging(global::System.String value);
        partial void OnCategoryChanged();
    
        /// <summary>
        /// Discount start date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime StartDate
        {
            get
            {
                return _StartDate;
            }
            set
            {
                OnStartDateChanging(value);
                ReportPropertyChanging("StartDate");
                _StartDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("StartDate");
                OnStartDateChanged();
            }
        }
        private global::System.DateTime _StartDate;
        partial void OnStartDateChanging(global::System.DateTime value);
        partial void OnStartDateChanged();
    
        /// <summary>
        /// Discount end date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime EndDate
        {
            get
            {
                return _EndDate;
            }
            set
            {
                OnEndDateChanging(value);
                ReportPropertyChanging("EndDate");
                _EndDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("EndDate");
                OnEndDateChanged();
            }
        }
        private global::System.DateTime _EndDate;
        partial void OnEndDateChanging(global::System.DateTime value);
        partial void OnEndDateChanged();
    
        /// <summary>
        /// Minimum discount percent allowed.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 MinQty
        {
            get
            {
                return _MinQty;
            }
            set
            {
                OnMinQtyChanging(value);
                ReportPropertyChanging("MinQty");
                _MinQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("MinQty");
                OnMinQtyChanged();
            }
        }
        private global::System.Int32 _MinQty;
        partial void OnMinQtyChanging(global::System.Int32 value);
        partial void OnMinQtyChanged();
    
        /// <summary>
        /// Maximum discount percent allowed.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.Int32> MaxQty
        {
            get
            {
                return _MaxQty;
            }
            set
            {
                OnMaxQtyChanging(value);
                ReportPropertyChanging("MaxQty");
                _MaxQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("MaxQty");
                OnMaxQtyChanged();
            }
        }
        private Nullable<global::System.Int32> _MaxQty;
        partial void OnMaxQtyChanging(Nullable<global::System.Int32> value);
        partial void OnMaxQtyChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Cross-reference table mapping products to special offer discounts.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="SpecialOfferProduct")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class SpecialOfferProduct : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new SpecialOfferProduct object.
        /// </summary>
        /// <param name="specialOfferId">Initial value of the SpecialOfferId property.</param>
        /// <param name="productId">Initial value of the ProductId property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static SpecialOfferProduct CreateSpecialOfferProduct(global::System.Int32 specialOfferId, global::System.Int32 productId, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            SpecialOfferProduct specialOfferProduct = new SpecialOfferProduct();
            specialOfferProduct.SpecialOfferId = specialOfferId;
            specialOfferProduct.ProductId = productId;
            specialOfferProduct.Rowguid = rowguid;
            specialOfferProduct.ModifiedDate = modifiedDate;
            return specialOfferProduct;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Primary key for SpecialOfferProduct records.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 SpecialOfferId
        {
            get
            {
                return _SpecialOfferId;
            }
            set
            {
                if (_SpecialOfferId != value)
                {
                    OnSpecialOfferIdChanging(value);
                    ReportPropertyChanging("SpecialOfferId");
                    _SpecialOfferId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("SpecialOfferId");
                    OnSpecialOfferIdChanged();
                }
            }
        }
        private global::System.Int32 _SpecialOfferId;
        partial void OnSpecialOfferIdChanging(global::System.Int32 value);
        partial void OnSpecialOfferIdChanged();
    
        /// <summary>
        /// Product identification number. Foreign key to Product.ProductID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductId
        {
            get
            {
                return _ProductId;
            }
            set
            {
                if (_ProductId != value)
                {
                    OnProductIdChanging(value);
                    ReportPropertyChanging("ProductId");
                    _ProductId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductId");
                    OnProductIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductId;
        partial void OnProductIdChanging(global::System.Int32 value);
        partial void OnProductIdChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SpecialOfferProduct_SpecialOfferId", "SpecialOffer")]
        public SpecialOffer SpecialOfferIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SpecialOffer>("MyProject4Model.SpecialOfferProduct_SpecialOfferId", "SpecialOffer").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SpecialOffer>("MyProject4Model.SpecialOfferProduct_SpecialOfferId", "SpecialOffer").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SpecialOffer> SpecialOfferIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SpecialOffer>("MyProject4Model.SpecialOfferProduct_SpecialOfferId", "SpecialOffer");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SpecialOffer>("MyProject4Model.SpecialOfferProduct_SpecialOfferId", "SpecialOffer", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "SpecialOfferProduct_ProductId", "Product")]
        public Product ProductIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.SpecialOfferProduct_ProductId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.SpecialOfferProduct_ProductId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.SpecialOfferProduct_ProductId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.SpecialOfferProduct_ProductId", "Product", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// State and province lookup table.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="StateProvince")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class StateProvince : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new StateProvince object.
        /// </summary>
        /// <param name="stateProvinceId">Initial value of the StateProvinceId property.</param>
        /// <param name="stateProvinceCode">Initial value of the StateProvinceCode property.</param>
        /// <param name="isOnlyStateProvinceFlag">Initial value of the IsOnlyStateProvinceFlag property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static StateProvince CreateStateProvince(global::System.Int32 stateProvinceId, global::System.String stateProvinceCode, global::System.Boolean isOnlyStateProvinceFlag, global::System.String name, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            StateProvince stateProvince = new StateProvince();
            stateProvince.StateProvinceId = stateProvinceId;
            stateProvince.StateProvinceCode = stateProvinceCode;
            stateProvince.IsOnlyStateProvinceFlag = isOnlyStateProvinceFlag;
            stateProvince.Name = name;
            stateProvince.Rowguid = rowguid;
            stateProvince.ModifiedDate = modifiedDate;
            return stateProvince;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 StateProvinceId
        {
            get
            {
                return _StateProvinceId;
            }
            set
            {
                if (_StateProvinceId != value)
                {
                    OnStateProvinceIdChanging(value);
                    ReportPropertyChanging("StateProvinceId");
                    _StateProvinceId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("StateProvinceId");
                    OnStateProvinceIdChanged();
                }
            }
        }
        private global::System.Int32 _StateProvinceId;
        partial void OnStateProvinceIdChanging(global::System.Int32 value);
        partial void OnStateProvinceIdChanged();
    
        /// <summary>
        /// ISO standard state or province code.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String StateProvinceCode
        {
            get
            {
                return _StateProvinceCode;
            }
            set
            {
                OnStateProvinceCodeChanging(value);
                ReportPropertyChanging("StateProvinceCode");
                _StateProvinceCode = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("StateProvinceCode");
                OnStateProvinceCodeChanged();
            }
        }
        private global::System.String _StateProvinceCode;
        partial void OnStateProvinceCodeChanging(global::System.String value);
        partial void OnStateProvinceCodeChanged();
    
        /// <summary>
        /// 0 = StateProvinceCode exists. 1 = StateProvinceCode unavailable, using CountryRegionCode.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Boolean IsOnlyStateProvinceFlag
        {
            get
            {
                return _IsOnlyStateProvinceFlag;
            }
            set
            {
                OnIsOnlyStateProvinceFlagChanging(value);
                ReportPropertyChanging("IsOnlyStateProvinceFlag");
                _IsOnlyStateProvinceFlag = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("IsOnlyStateProvinceFlag");
                OnIsOnlyStateProvinceFlagChanged();
            }
        }
        private global::System.Boolean _IsOnlyStateProvinceFlag;
        partial void OnIsOnlyStateProvinceFlagChanging(global::System.Boolean value);
        partial void OnIsOnlyStateProvinceFlagChanged();
    
        /// <summary>
        /// State or province description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "StateProvince_CountryRegionCode", "CountryRegion")]
        public CountryRegion CountryRegionCodeObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CountryRegion>("MyProject4Model.StateProvince_CountryRegionCode", "CountryRegion").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CountryRegion>("MyProject4Model.StateProvince_CountryRegionCode", "CountryRegion").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<CountryRegion> CountryRegionCodeObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<CountryRegion>("MyProject4Model.StateProvince_CountryRegionCode", "CountryRegion");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<CountryRegion>("MyProject4Model.StateProvince_CountryRegionCode", "CountryRegion", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "StateProvince_TerritoryId", "SalesTerritory")]
        public SalesTerritory TerritoryIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.StateProvince_TerritoryId", "SalesTerritory").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.StateProvince_TerritoryId", "SalesTerritory").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SalesTerritory> TerritoryIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesTerritory>("MyProject4Model.StateProvince_TerritoryId", "SalesTerritory");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SalesTerritory>("MyProject4Model.StateProvince_TerritoryId", "SalesTerritory", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Customers (resellers) of Adventure Works products.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Store")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Store : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Store object.
        /// </summary>
        /// <param name="customerId">Initial value of the CustomerId property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Store CreateStore(global::System.Int32 customerId, global::System.String name, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            Store store = new Store();
            store.CustomerId = customerId;
            store.Name = name;
            store.Rowguid = rowguid;
            store.ModifiedDate = modifiedDate;
            return store;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 CustomerId
        {
            get
            {
                return _CustomerId;
            }
            set
            {
                if (_CustomerId != value)
                {
                    OnCustomerIdChanging(value);
                    ReportPropertyChanging("CustomerId");
                    _CustomerId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("CustomerId");
                    OnCustomerIdChanged();
                }
            }
        }
        private global::System.Int32 _CustomerId;
        partial void OnCustomerIdChanging(global::System.Int32 value);
        partial void OnCustomerIdChanged();
    
        /// <summary>
        /// Name of the store.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Demographic informationg about the store such as the number of employees, annual sales and store type.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String Demographics
        {
            get
            {
                return _Demographics;
            }
            set
            {
                OnDemographicsChanging(value);
                ReportPropertyChanging("Demographics");
                _Demographics = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("Demographics");
                OnDemographicsChanged();
            }
        }
        private global::System.String _Demographics;
        partial void OnDemographicsChanging(global::System.String value);
        partial void OnDemographicsChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "Store_CustomerId", "Customer")]
        public Customer CustomerIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("MyProject4Model.Store_CustomerId", "Customer").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("MyProject4Model.Store_CustomerId", "Customer").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Customer> CustomerIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Customer>("MyProject4Model.Store_CustomerId", "Customer");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Customer>("MyProject4Model.Store_CustomerId", "Customer", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "Store_SalesPersonId", "SalesPerson")]
        public SalesPerson SalesPersonIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesPerson>("MyProject4Model.Store_SalesPersonId", "SalesPerson").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesPerson>("MyProject4Model.Store_SalesPersonId", "SalesPerson").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<SalesPerson> SalesPersonIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<SalesPerson>("MyProject4Model.Store_SalesPersonId", "SalesPerson");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<SalesPerson>("MyProject4Model.Store_SalesPersonId", "SalesPerson", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Cross-reference table mapping stores and their employees.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="StoreContact")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class StoreContact : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new StoreContact object.
        /// </summary>
        /// <param name="customerId">Initial value of the CustomerId property.</param>
        /// <param name="contactId">Initial value of the ContactId property.</param>
        /// <param name="rowguid">Initial value of the Rowguid property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static StoreContact CreateStoreContact(global::System.Int32 customerId, global::System.Int32 contactId, global::System.Guid rowguid, global::System.DateTime modifiedDate)
        {
            StoreContact storeContact = new StoreContact();
            storeContact.CustomerId = customerId;
            storeContact.ContactId = contactId;
            storeContact.Rowguid = rowguid;
            storeContact.ModifiedDate = modifiedDate;
            return storeContact;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Store identification number. Foreign key to Customer.CustomerID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 CustomerId
        {
            get
            {
                return _CustomerId;
            }
            set
            {
                if (_CustomerId != value)
                {
                    OnCustomerIdChanging(value);
                    ReportPropertyChanging("CustomerId");
                    _CustomerId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("CustomerId");
                    OnCustomerIdChanged();
                }
            }
        }
        private global::System.Int32 _CustomerId;
        partial void OnCustomerIdChanging(global::System.Int32 value);
        partial void OnCustomerIdChanged();
    
        /// <summary>
        /// Contact (store employee) identification number. Foreign key to Contact.ContactID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ContactId
        {
            get
            {
                return _ContactId;
            }
            set
            {
                if (_ContactId != value)
                {
                    OnContactIdChanging(value);
                    ReportPropertyChanging("ContactId");
                    _ContactId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ContactId");
                    OnContactIdChanged();
                }
            }
        }
        private global::System.Int32 _ContactId;
        partial void OnContactIdChanging(global::System.Int32 value);
        partial void OnContactIdChanged();
    
        /// <summary>
        /// ROWGUIDCOL number uniquely identifying the record. Used to support a merge replication sample.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Guid Rowguid
        {
            get
            {
                return _Rowguid;
            }
            set
            {
                OnRowguidChanging(value);
                ReportPropertyChanging("Rowguid");
                _Rowguid = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Rowguid");
                OnRowguidChanged();
            }
        }
        private global::System.Guid _Rowguid;
        partial void OnRowguidChanging(global::System.Guid value);
        partial void OnRowguidChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "StoreContact_ContactTypeId", "ContactType")]
        public ContactType ContactTypeIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ContactType>("MyProject4Model.StoreContact_ContactTypeId", "ContactType").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ContactType>("MyProject4Model.StoreContact_ContactTypeId", "ContactType").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<ContactType> ContactTypeIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ContactType>("MyProject4Model.StoreContact_ContactTypeId", "ContactType");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<ContactType>("MyProject4Model.StoreContact_ContactTypeId", "ContactType", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "StoreContact_CustomerId", "Store")]
        public Store CustomerIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Store>("MyProject4Model.StoreContact_CustomerId", "Store").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Store>("MyProject4Model.StoreContact_CustomerId", "Store").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Store> CustomerIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Store>("MyProject4Model.StoreContact_CustomerId", "Store");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Store>("MyProject4Model.StoreContact_CustomerId", "Store", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "StoreContact_ContactId", "Contact")]
        public Contact ContactIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.StoreContact_ContactId", "Contact").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.StoreContact_ContactId", "Contact").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Contact> ContactIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.StoreContact_ContactId", "Contact");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Contact>("MyProject4Model.StoreContact_ContactId", "Contact", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Record of each purchase order, sales order, or work order transaction year to date.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="TransactionHistory")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class TransactionHistory : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new TransactionHistory object.
        /// </summary>
        /// <param name="transactionId">Initial value of the TransactionId property.</param>
        /// <param name="referenceOrderId">Initial value of the ReferenceOrderId property.</param>
        /// <param name="referenceOrderLineId">Initial value of the ReferenceOrderLineId property.</param>
        /// <param name="transactionDate">Initial value of the TransactionDate property.</param>
        /// <param name="transactionType">Initial value of the TransactionType property.</param>
        /// <param name="quantity">Initial value of the Quantity property.</param>
        /// <param name="actualCost">Initial value of the ActualCost property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static TransactionHistory CreateTransactionHistory(global::System.Int32 transactionId, global::System.Int32 referenceOrderId, global::System.Int32 referenceOrderLineId, global::System.DateTime transactionDate, global::System.String transactionType, global::System.Int32 quantity, global::System.Decimal actualCost, global::System.DateTime modifiedDate)
        {
            TransactionHistory transactionHistory = new TransactionHistory();
            transactionHistory.TransactionId = transactionId;
            transactionHistory.ReferenceOrderId = referenceOrderId;
            transactionHistory.ReferenceOrderLineId = referenceOrderLineId;
            transactionHistory.TransactionDate = transactionDate;
            transactionHistory.TransactionType = transactionType;
            transactionHistory.Quantity = quantity;
            transactionHistory.ActualCost = actualCost;
            transactionHistory.ModifiedDate = modifiedDate;
            return transactionHistory;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 TransactionId
        {
            get
            {
                return _TransactionId;
            }
            set
            {
                if (_TransactionId != value)
                {
                    OnTransactionIdChanging(value);
                    ReportPropertyChanging("TransactionId");
                    _TransactionId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("TransactionId");
                    OnTransactionIdChanged();
                }
            }
        }
        private global::System.Int32 _TransactionId;
        partial void OnTransactionIdChanging(global::System.Int32 value);
        partial void OnTransactionIdChanged();
    
        /// <summary>
        /// Purchase order, sales order, or work order identification number.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ReferenceOrderId
        {
            get
            {
                return _ReferenceOrderId;
            }
            set
            {
                OnReferenceOrderIdChanging(value);
                ReportPropertyChanging("ReferenceOrderId");
                _ReferenceOrderId = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ReferenceOrderId");
                OnReferenceOrderIdChanged();
            }
        }
        private global::System.Int32 _ReferenceOrderId;
        partial void OnReferenceOrderIdChanging(global::System.Int32 value);
        partial void OnReferenceOrderIdChanged();
    
        /// <summary>
        /// Line number associated with the purchase order, sales order, or work order.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ReferenceOrderLineId
        {
            get
            {
                return _ReferenceOrderLineId;
            }
            set
            {
                OnReferenceOrderLineIdChanging(value);
                ReportPropertyChanging("ReferenceOrderLineId");
                _ReferenceOrderLineId = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ReferenceOrderLineId");
                OnReferenceOrderLineIdChanged();
            }
        }
        private global::System.Int32 _ReferenceOrderLineId;
        partial void OnReferenceOrderLineIdChanging(global::System.Int32 value);
        partial void OnReferenceOrderLineIdChanged();
    
        /// <summary>
        /// Date and time of the transaction.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime TransactionDate
        {
            get
            {
                return _TransactionDate;
            }
            set
            {
                OnTransactionDateChanging(value);
                ReportPropertyChanging("TransactionDate");
                _TransactionDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("TransactionDate");
                OnTransactionDateChanged();
            }
        }
        private global::System.DateTime _TransactionDate;
        partial void OnTransactionDateChanging(global::System.DateTime value);
        partial void OnTransactionDateChanged();
    
        /// <summary>
        /// W = WorkOrder, S = SalesOrder, P = PurchaseOrder
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String TransactionType
        {
            get
            {
                return _TransactionType;
            }
            set
            {
                OnTransactionTypeChanging(value);
                ReportPropertyChanging("TransactionType");
                _TransactionType = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("TransactionType");
                OnTransactionTypeChanged();
            }
        }
        private global::System.String _TransactionType;
        partial void OnTransactionTypeChanging(global::System.String value);
        partial void OnTransactionTypeChanged();
    
        /// <summary>
        /// Product quantity.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 Quantity
        {
            get
            {
                return _Quantity;
            }
            set
            {
                OnQuantityChanging(value);
                ReportPropertyChanging("Quantity");
                _Quantity = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Quantity");
                OnQuantityChanged();
            }
        }
        private global::System.Int32 _Quantity;
        partial void OnQuantityChanging(global::System.Int32 value);
        partial void OnQuantityChanged();
    
        /// <summary>
        /// Product cost.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal ActualCost
        {
            get
            {
                return _ActualCost;
            }
            set
            {
                OnActualCostChanging(value);
                ReportPropertyChanging("ActualCost");
                _ActualCost = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ActualCost");
                OnActualCostChanged();
            }
        }
        private global::System.Decimal _ActualCost;
        partial void OnActualCostChanging(global::System.Decimal value);
        partial void OnActualCostChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "TransactionHistory_ProductId", "Product")]
        public Product ProductIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.TransactionHistory_ProductId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.TransactionHistory_ProductId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.TransactionHistory_ProductId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.TransactionHistory_ProductId", "Product", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Transactions for previous years.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="TransactionHistoryArchive")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class TransactionHistoryArchive : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new TransactionHistoryArchive object.
        /// </summary>
        /// <param name="transactionId">Initial value of the TransactionId property.</param>
        /// <param name="productId">Initial value of the ProductId property.</param>
        /// <param name="referenceOrderId">Initial value of the ReferenceOrderId property.</param>
        /// <param name="referenceOrderLineId">Initial value of the ReferenceOrderLineId property.</param>
        /// <param name="transactionDate">Initial value of the TransactionDate property.</param>
        /// <param name="transactionType">Initial value of the TransactionType property.</param>
        /// <param name="quantity">Initial value of the Quantity property.</param>
        /// <param name="actualCost">Initial value of the ActualCost property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static TransactionHistoryArchive CreateTransactionHistoryArchive(global::System.Int32 transactionId, global::System.Int32 productId, global::System.Int32 referenceOrderId, global::System.Int32 referenceOrderLineId, global::System.DateTime transactionDate, global::System.String transactionType, global::System.Int32 quantity, global::System.Decimal actualCost, global::System.DateTime modifiedDate)
        {
            TransactionHistoryArchive transactionHistoryArchive = new TransactionHistoryArchive();
            transactionHistoryArchive.TransactionId = transactionId;
            transactionHistoryArchive.ProductId = productId;
            transactionHistoryArchive.ReferenceOrderId = referenceOrderId;
            transactionHistoryArchive.ReferenceOrderLineId = referenceOrderLineId;
            transactionHistoryArchive.TransactionDate = transactionDate;
            transactionHistoryArchive.TransactionType = transactionType;
            transactionHistoryArchive.Quantity = quantity;
            transactionHistoryArchive.ActualCost = actualCost;
            transactionHistoryArchive.ModifiedDate = modifiedDate;
            return transactionHistoryArchive;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 TransactionId
        {
            get
            {
                return _TransactionId;
            }
            set
            {
                if (_TransactionId != value)
                {
                    OnTransactionIdChanging(value);
                    ReportPropertyChanging("TransactionId");
                    _TransactionId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("TransactionId");
                    OnTransactionIdChanged();
                }
            }
        }
        private global::System.Int32 _TransactionId;
        partial void OnTransactionIdChanging(global::System.Int32 value);
        partial void OnTransactionIdChanged();
    
        /// <summary>
        /// Product identification number. Foreign key to Product.ProductID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductId
        {
            get
            {
                return _ProductId;
            }
            set
            {
                OnProductIdChanging(value);
                ReportPropertyChanging("ProductId");
                _ProductId = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ProductId");
                OnProductIdChanged();
            }
        }
        private global::System.Int32 _ProductId;
        partial void OnProductIdChanging(global::System.Int32 value);
        partial void OnProductIdChanged();
    
        /// <summary>
        /// Purchase order, sales order, or work order identification number.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ReferenceOrderId
        {
            get
            {
                return _ReferenceOrderId;
            }
            set
            {
                OnReferenceOrderIdChanging(value);
                ReportPropertyChanging("ReferenceOrderId");
                _ReferenceOrderId = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ReferenceOrderId");
                OnReferenceOrderIdChanged();
            }
        }
        private global::System.Int32 _ReferenceOrderId;
        partial void OnReferenceOrderIdChanging(global::System.Int32 value);
        partial void OnReferenceOrderIdChanged();
    
        /// <summary>
        /// Line number associated with the purchase order, sales order, or work order.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ReferenceOrderLineId
        {
            get
            {
                return _ReferenceOrderLineId;
            }
            set
            {
                OnReferenceOrderLineIdChanging(value);
                ReportPropertyChanging("ReferenceOrderLineId");
                _ReferenceOrderLineId = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ReferenceOrderLineId");
                OnReferenceOrderLineIdChanged();
            }
        }
        private global::System.Int32 _ReferenceOrderLineId;
        partial void OnReferenceOrderLineIdChanging(global::System.Int32 value);
        partial void OnReferenceOrderLineIdChanged();
    
        /// <summary>
        /// Date and time of the transaction.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime TransactionDate
        {
            get
            {
                return _TransactionDate;
            }
            set
            {
                OnTransactionDateChanging(value);
                ReportPropertyChanging("TransactionDate");
                _TransactionDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("TransactionDate");
                OnTransactionDateChanged();
            }
        }
        private global::System.DateTime _TransactionDate;
        partial void OnTransactionDateChanging(global::System.DateTime value);
        partial void OnTransactionDateChanged();
    
        /// <summary>
        /// W = Work Order, S = Sales Order, P = Purchase Order
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String TransactionType
        {
            get
            {
                return _TransactionType;
            }
            set
            {
                OnTransactionTypeChanging(value);
                ReportPropertyChanging("TransactionType");
                _TransactionType = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("TransactionType");
                OnTransactionTypeChanged();
            }
        }
        private global::System.String _TransactionType;
        partial void OnTransactionTypeChanging(global::System.String value);
        partial void OnTransactionTypeChanged();
    
        /// <summary>
        /// Product quantity.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 Quantity
        {
            get
            {
                return _Quantity;
            }
            set
            {
                OnQuantityChanging(value);
                ReportPropertyChanging("Quantity");
                _Quantity = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Quantity");
                OnQuantityChanged();
            }
        }
        private global::System.Int32 _Quantity;
        partial void OnQuantityChanging(global::System.Int32 value);
        partial void OnQuantityChanged();
    
        /// <summary>
        /// Product cost.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal ActualCost
        {
            get
            {
                return _ActualCost;
            }
            set
            {
                OnActualCostChanging(value);
                ReportPropertyChanging("ActualCost");
                _ActualCost = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ActualCost");
                OnActualCostChanged();
            }
        }
        private global::System.Decimal _ActualCost;
        partial void OnActualCostChanging(global::System.Decimal value);
        partial void OnActualCostChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Unit of measure lookup table.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="UnitMeasure")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class UnitMeasure : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new UnitMeasure object.
        /// </summary>
        /// <param name="unitMeasureCode">Initial value of the UnitMeasureCode property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static UnitMeasure CreateUnitMeasure(global::System.String unitMeasureCode, global::System.String name, global::System.DateTime modifiedDate)
        {
            UnitMeasure unitMeasure = new UnitMeasure();
            unitMeasure.UnitMeasureCode = unitMeasureCode;
            unitMeasure.Name = name;
            unitMeasure.ModifiedDate = modifiedDate;
            return unitMeasure;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String UnitMeasureCode
        {
            get
            {
                return _UnitMeasureCode;
            }
            set
            {
                if (_UnitMeasureCode != value)
                {
                    OnUnitMeasureCodeChanging(value);
                    ReportPropertyChanging("UnitMeasureCode");
                    _UnitMeasureCode = StructuralObject.SetValidValue(value, false);
                    ReportPropertyChanged("UnitMeasureCode");
                    OnUnitMeasureCodeChanged();
                }
            }
        }
        private global::System.String _UnitMeasureCode;
        partial void OnUnitMeasureCodeChanging(global::System.String value);
        partial void OnUnitMeasureCodeChanged();
    
        /// <summary>
        /// Unit of measure description.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Companies from whom Adventure Works Cycles purchases parts or other goods.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="Vendor")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class Vendor : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new Vendor object.
        /// </summary>
        /// <param name="vendorId">Initial value of the VendorId property.</param>
        /// <param name="accountNumber">Initial value of the AccountNumber property.</param>
        /// <param name="name">Initial value of the Name property.</param>
        /// <param name="creditRating">Initial value of the CreditRating property.</param>
        /// <param name="preferredVendorStatus">Initial value of the PreferredVendorStatus property.</param>
        /// <param name="activeFlag">Initial value of the ActiveFlag property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static Vendor CreateVendor(global::System.Int32 vendorId, global::System.String accountNumber, global::System.String name, global::System.Byte creditRating, global::System.Boolean preferredVendorStatus, global::System.Boolean activeFlag, global::System.DateTime modifiedDate)
        {
            Vendor vendor = new Vendor();
            vendor.VendorId = vendorId;
            vendor.AccountNumber = accountNumber;
            vendor.Name = name;
            vendor.CreditRating = creditRating;
            vendor.PreferredVendorStatus = preferredVendorStatus;
            vendor.ActiveFlag = activeFlag;
            vendor.ModifiedDate = modifiedDate;
            return vendor;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 VendorId
        {
            get
            {
                return _VendorId;
            }
            set
            {
                if (_VendorId != value)
                {
                    OnVendorIdChanging(value);
                    ReportPropertyChanging("VendorId");
                    _VendorId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("VendorId");
                    OnVendorIdChanged();
                }
            }
        }
        private global::System.Int32 _VendorId;
        partial void OnVendorIdChanging(global::System.Int32 value);
        partial void OnVendorIdChanged();
    
        /// <summary>
        /// Vendor account (identification) number.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String AccountNumber
        {
            get
            {
                return _AccountNumber;
            }
            set
            {
                OnAccountNumberChanging(value);
                ReportPropertyChanging("AccountNumber");
                _AccountNumber = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("AccountNumber");
                OnAccountNumberChanged();
            }
        }
        private global::System.String _AccountNumber;
        partial void OnAccountNumberChanging(global::System.String value);
        partial void OnAccountNumberChanged();
    
        /// <summary>
        /// Company name.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.String Name
        {
            get
            {
                return _Name;
            }
            set
            {
                OnNameChanging(value);
                ReportPropertyChanging("Name");
                _Name = StructuralObject.SetValidValue(value, false);
                ReportPropertyChanged("Name");
                OnNameChanged();
            }
        }
        private global::System.String _Name;
        partial void OnNameChanging(global::System.String value);
        partial void OnNameChanged();
    
        /// <summary>
        /// 1 = Superior, 2 = Excellent, 3 = Above average, 4 = Average, 5 = Below average
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Byte CreditRating
        {
            get
            {
                return _CreditRating;
            }
            set
            {
                OnCreditRatingChanging(value);
                ReportPropertyChanging("CreditRating");
                _CreditRating = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("CreditRating");
                OnCreditRatingChanged();
            }
        }
        private global::System.Byte _CreditRating;
        partial void OnCreditRatingChanging(global::System.Byte value);
        partial void OnCreditRatingChanged();
    
        /// <summary>
        /// 0 = Do not use if another vendor is available. 1 = Preferred over other vendors supplying the same product.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Boolean PreferredVendorStatus
        {
            get
            {
                return _PreferredVendorStatus;
            }
            set
            {
                OnPreferredVendorStatusChanging(value);
                ReportPropertyChanging("PreferredVendorStatus");
                _PreferredVendorStatus = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("PreferredVendorStatus");
                OnPreferredVendorStatusChanged();
            }
        }
        private global::System.Boolean _PreferredVendorStatus;
        partial void OnPreferredVendorStatusChanging(global::System.Boolean value);
        partial void OnPreferredVendorStatusChanged();
    
        /// <summary>
        /// 0 = Vendor no longer used. 1 = Vendor is actively used.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Boolean ActiveFlag
        {
            get
            {
                return _ActiveFlag;
            }
            set
            {
                OnActiveFlagChanging(value);
                ReportPropertyChanging("ActiveFlag");
                _ActiveFlag = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ActiveFlag");
                OnActiveFlagChanged();
            }
        }
        private global::System.Boolean _ActiveFlag;
        partial void OnActiveFlagChanging(global::System.Boolean value);
        partial void OnActiveFlagChanged();
    
        /// <summary>
        /// Vendor URL.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public global::System.String PurchasingWebServiceUrl
        {
            get
            {
                return _PurchasingWebServiceUrl;
            }
            set
            {
                OnPurchasingWebServiceUrlChanging(value);
                ReportPropertyChanging("PurchasingWebServiceUrl");
                _PurchasingWebServiceUrl = StructuralObject.SetValidValue(value, true);
                ReportPropertyChanged("PurchasingWebServiceUrl");
                OnPurchasingWebServiceUrlChanged();
            }
        }
        private global::System.String _PurchasingWebServiceUrl;
        partial void OnPurchasingWebServiceUrlChanging(global::System.String value);
        partial void OnPurchasingWebServiceUrlChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
    }
    
    /// <summary>
    /// Cross-reference mapping vendors and addresses.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="VendorAddress")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class VendorAddress : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new VendorAddress object.
        /// </summary>
        /// <param name="vendorId">Initial value of the VendorId property.</param>
        /// <param name="addressId">Initial value of the AddressId property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static VendorAddress CreateVendorAddress(global::System.Int32 vendorId, global::System.Int32 addressId, global::System.DateTime modifiedDate)
        {
            VendorAddress vendorAddress = new VendorAddress();
            vendorAddress.VendorId = vendorId;
            vendorAddress.AddressId = addressId;
            vendorAddress.ModifiedDate = modifiedDate;
            return vendorAddress;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Primary key. Foreign key to Vendor.VendorID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 VendorId
        {
            get
            {
                return _VendorId;
            }
            set
            {
                if (_VendorId != value)
                {
                    OnVendorIdChanging(value);
                    ReportPropertyChanging("VendorId");
                    _VendorId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("VendorId");
                    OnVendorIdChanged();
                }
            }
        }
        private global::System.Int32 _VendorId;
        partial void OnVendorIdChanging(global::System.Int32 value);
        partial void OnVendorIdChanged();
    
        /// <summary>
        /// Primary key. Foreign key to Address.AddressID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 AddressId
        {
            get
            {
                return _AddressId;
            }
            set
            {
                if (_AddressId != value)
                {
                    OnAddressIdChanging(value);
                    ReportPropertyChanging("AddressId");
                    _AddressId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("AddressId");
                    OnAddressIdChanged();
                }
            }
        }
        private global::System.Int32 _AddressId;
        partial void OnAddressIdChanging(global::System.Int32 value);
        partial void OnAddressIdChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "VendorAddress_AddressTypeId", "AddressType")]
        public AddressType AddressTypeIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<AddressType>("MyProject4Model.VendorAddress_AddressTypeId", "AddressType").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<AddressType>("MyProject4Model.VendorAddress_AddressTypeId", "AddressType").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<AddressType> AddressTypeIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<AddressType>("MyProject4Model.VendorAddress_AddressTypeId", "AddressType");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<AddressType>("MyProject4Model.VendorAddress_AddressTypeId", "AddressType", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "VendorAddress_VendorId", "Vendor")]
        public Vendor VendorIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Vendor>("MyProject4Model.VendorAddress_VendorId", "Vendor").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Vendor>("MyProject4Model.VendorAddress_VendorId", "Vendor").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Vendor> VendorIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Vendor>("MyProject4Model.VendorAddress_VendorId", "Vendor");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Vendor>("MyProject4Model.VendorAddress_VendorId", "Vendor", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "VendorAddress_AddressId", "Address")]
        public Address AddressIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.VendorAddress_AddressId", "Address").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.VendorAddress_AddressId", "Address").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Address> AddressIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Address>("MyProject4Model.VendorAddress_AddressId", "Address");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Address>("MyProject4Model.VendorAddress_AddressId", "Address", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Cross-reference table mapping vendors and their employees.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="VendorContact")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class VendorContact : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new VendorContact object.
        /// </summary>
        /// <param name="vendorId">Initial value of the VendorId property.</param>
        /// <param name="contactId">Initial value of the ContactId property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static VendorContact CreateVendorContact(global::System.Int32 vendorId, global::System.Int32 contactId, global::System.DateTime modifiedDate)
        {
            VendorContact vendorContact = new VendorContact();
            vendorContact.VendorId = vendorId;
            vendorContact.ContactId = contactId;
            vendorContact.ModifiedDate = modifiedDate;
            return vendorContact;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Primary key.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 VendorId
        {
            get
            {
                return _VendorId;
            }
            set
            {
                if (_VendorId != value)
                {
                    OnVendorIdChanging(value);
                    ReportPropertyChanging("VendorId");
                    _VendorId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("VendorId");
                    OnVendorIdChanged();
                }
            }
        }
        private global::System.Int32 _VendorId;
        partial void OnVendorIdChanging(global::System.Int32 value);
        partial void OnVendorIdChanged();
    
        /// <summary>
        /// Contact (Vendor employee) identification number. Foreign key to Contact.ContactID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ContactId
        {
            get
            {
                return _ContactId;
            }
            set
            {
                if (_ContactId != value)
                {
                    OnContactIdChanging(value);
                    ReportPropertyChanging("ContactId");
                    _ContactId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ContactId");
                    OnContactIdChanged();
                }
            }
        }
        private global::System.Int32 _ContactId;
        partial void OnContactIdChanging(global::System.Int32 value);
        partial void OnContactIdChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "VendorContact_ContactTypeId", "ContactType")]
        public ContactType ContactTypeIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ContactType>("MyProject4Model.VendorContact_ContactTypeId", "ContactType").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ContactType>("MyProject4Model.VendorContact_ContactTypeId", "ContactType").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<ContactType> ContactTypeIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ContactType>("MyProject4Model.VendorContact_ContactTypeId", "ContactType");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<ContactType>("MyProject4Model.VendorContact_ContactTypeId", "ContactType", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "VendorContact_VendorId", "Vendor")]
        public Vendor VendorIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Vendor>("MyProject4Model.VendorContact_VendorId", "Vendor").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Vendor>("MyProject4Model.VendorContact_VendorId", "Vendor").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Vendor> VendorIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Vendor>("MyProject4Model.VendorContact_VendorId", "Vendor");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Vendor>("MyProject4Model.VendorContact_VendorId", "Vendor", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "VendorContact_ContactId", "Contact")]
        public Contact ContactIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.VendorContact_ContactId", "Contact").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.VendorContact_ContactId", "Contact").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Contact> ContactIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Contact>("MyProject4Model.VendorContact_ContactId", "Contact");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Contact>("MyProject4Model.VendorContact_ContactId", "Contact", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Manufacturing work orders.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="WorkOrder")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class WorkOrder : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new WorkOrder object.
        /// </summary>
        /// <param name="workOrderId">Initial value of the WorkOrderId property.</param>
        /// <param name="orderQty">Initial value of the OrderQty property.</param>
        /// <param name="stockedQty">Initial value of the StockedQty property.</param>
        /// <param name="scrappedQty">Initial value of the ScrappedQty property.</param>
        /// <param name="startDate">Initial value of the StartDate property.</param>
        /// <param name="dueDate">Initial value of the DueDate property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static WorkOrder CreateWorkOrder(global::System.Int32 workOrderId, global::System.Int32 orderQty, global::System.Int32 stockedQty, global::System.Int16 scrappedQty, global::System.DateTime startDate, global::System.DateTime dueDate, global::System.DateTime modifiedDate)
        {
            WorkOrder workOrder = new WorkOrder();
            workOrder.WorkOrderId = workOrderId;
            workOrder.OrderQty = orderQty;
            workOrder.StockedQty = stockedQty;
            workOrder.ScrappedQty = scrappedQty;
            workOrder.StartDate = startDate;
            workOrder.DueDate = dueDate;
            workOrder.ModifiedDate = modifiedDate;
            return workOrder;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 WorkOrderId
        {
            get
            {
                return _WorkOrderId;
            }
            set
            {
                if (_WorkOrderId != value)
                {
                    OnWorkOrderIdChanging(value);
                    ReportPropertyChanging("WorkOrderId");
                    _WorkOrderId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("WorkOrderId");
                    OnWorkOrderIdChanged();
                }
            }
        }
        private global::System.Int32 _WorkOrderId;
        partial void OnWorkOrderIdChanging(global::System.Int32 value);
        partial void OnWorkOrderIdChanged();
    
        /// <summary>
        /// Product quantity to build.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 OrderQty
        {
            get
            {
                return _OrderQty;
            }
            set
            {
                OnOrderQtyChanging(value);
                ReportPropertyChanging("OrderQty");
                _OrderQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("OrderQty");
                OnOrderQtyChanged();
            }
        }
        private global::System.Int32 _OrderQty;
        partial void OnOrderQtyChanging(global::System.Int32 value);
        partial void OnOrderQtyChanged();
    
        /// <summary>
        /// Quantity built and put in inventory.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 StockedQty
        {
            get
            {
                return _StockedQty;
            }
            set
            {
                OnStockedQtyChanging(value);
                ReportPropertyChanging("StockedQty");
                _StockedQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("StockedQty");
                OnStockedQtyChanged();
            }
        }
        private global::System.Int32 _StockedQty;
        partial void OnStockedQtyChanging(global::System.Int32 value);
        partial void OnStockedQtyChanged();
    
        /// <summary>
        /// Quantity that failed inspection.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 ScrappedQty
        {
            get
            {
                return _ScrappedQty;
            }
            set
            {
                OnScrappedQtyChanging(value);
                ReportPropertyChanging("ScrappedQty");
                _ScrappedQty = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ScrappedQty");
                OnScrappedQtyChanged();
            }
        }
        private global::System.Int16 _ScrappedQty;
        partial void OnScrappedQtyChanging(global::System.Int16 value);
        partial void OnScrappedQtyChanged();
    
        /// <summary>
        /// Work order start date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime StartDate
        {
            get
            {
                return _StartDate;
            }
            set
            {
                OnStartDateChanging(value);
                ReportPropertyChanging("StartDate");
                _StartDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("StartDate");
                OnStartDateChanged();
            }
        }
        private global::System.DateTime _StartDate;
        partial void OnStartDateChanging(global::System.DateTime value);
        partial void OnStartDateChanged();
    
        /// <summary>
        /// Work order end date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> EndDate
        {
            get
            {
                return _EndDate;
            }
            set
            {
                OnEndDateChanging(value);
                ReportPropertyChanging("EndDate");
                _EndDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("EndDate");
                OnEndDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _EndDate;
        partial void OnEndDateChanging(Nullable<global::System.DateTime> value);
        partial void OnEndDateChanged();
    
        /// <summary>
        /// Work order due date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime DueDate
        {
            get
            {
                return _DueDate;
            }
            set
            {
                OnDueDateChanging(value);
                ReportPropertyChanging("DueDate");
                _DueDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("DueDate");
                OnDueDateChanged();
            }
        }
        private global::System.DateTime _DueDate;
        partial void OnDueDateChanging(global::System.DateTime value);
        partial void OnDueDateChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "WorkOrder_ProductId", "Product")]
        public Product ProductIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.WorkOrder_ProductId", "Product").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.WorkOrder_ProductId", "Product").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Product> ProductIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Product>("MyProject4Model.WorkOrder_ProductId", "Product");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Product>("MyProject4Model.WorkOrder_ProductId", "Product", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "WorkOrder_ScrapReasonId", "ScrapReason")]
        public ScrapReason ScrapReasonIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ScrapReason>("MyProject4Model.WorkOrder_ScrapReasonId", "ScrapReason").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ScrapReason>("MyProject4Model.WorkOrder_ScrapReasonId", "ScrapReason").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<ScrapReason> ScrapReasonIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<ScrapReason>("MyProject4Model.WorkOrder_ScrapReasonId", "ScrapReason");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<ScrapReason>("MyProject4Model.WorkOrder_ScrapReasonId", "ScrapReason", value);
                }
            }
        }

        #endregion
    }
    
    /// <summary>
    /// Work order details.
    /// </summary>
    [EdmEntityTypeAttribute(NamespaceName="MyProject4Model", Name="WorkOrderRouting")]
    [Serializable()]
    [DataContractAttribute(IsReference=true)]
    public partial class WorkOrderRouting : EntityObject
    {
        #region Factory Method
    
        /// <summary>
        /// Create a new WorkOrderRouting object.
        /// </summary>
        /// <param name="workOrderId">Initial value of the WorkOrderId property.</param>
        /// <param name="productId">Initial value of the ProductId property.</param>
        /// <param name="operationSequence">Initial value of the OperationSequence property.</param>
        /// <param name="scheduledStartDate">Initial value of the ScheduledStartDate property.</param>
        /// <param name="scheduledEndDate">Initial value of the ScheduledEndDate property.</param>
        /// <param name="plannedCost">Initial value of the PlannedCost property.</param>
        /// <param name="modifiedDate">Initial value of the ModifiedDate property.</param>
        public static WorkOrderRouting CreateWorkOrderRouting(global::System.Int32 workOrderId, global::System.Int32 productId, global::System.Int16 operationSequence, global::System.DateTime scheduledStartDate, global::System.DateTime scheduledEndDate, global::System.Decimal plannedCost, global::System.DateTime modifiedDate)
        {
            WorkOrderRouting workOrderRouting = new WorkOrderRouting();
            workOrderRouting.WorkOrderId = workOrderId;
            workOrderRouting.ProductId = productId;
            workOrderRouting.OperationSequence = operationSequence;
            workOrderRouting.ScheduledStartDate = scheduledStartDate;
            workOrderRouting.ScheduledEndDate = scheduledEndDate;
            workOrderRouting.PlannedCost = plannedCost;
            workOrderRouting.ModifiedDate = modifiedDate;
            return workOrderRouting;
        }

        #endregion
        #region Primitive Properties
    
        /// <summary>
        /// Primary key. Foreign key to WorkOrder.WorkOrderID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 WorkOrderId
        {
            get
            {
                return _WorkOrderId;
            }
            set
            {
                if (_WorkOrderId != value)
                {
                    OnWorkOrderIdChanging(value);
                    ReportPropertyChanging("WorkOrderId");
                    _WorkOrderId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("WorkOrderId");
                    OnWorkOrderIdChanged();
                }
            }
        }
        private global::System.Int32 _WorkOrderId;
        partial void OnWorkOrderIdChanging(global::System.Int32 value);
        partial void OnWorkOrderIdChanged();
    
        /// <summary>
        /// Primary key. Foreign key to Product.ProductID.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int32 ProductId
        {
            get
            {
                return _ProductId;
            }
            set
            {
                if (_ProductId != value)
                {
                    OnProductIdChanging(value);
                    ReportPropertyChanging("ProductId");
                    _ProductId = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("ProductId");
                    OnProductIdChanged();
                }
            }
        }
        private global::System.Int32 _ProductId;
        partial void OnProductIdChanging(global::System.Int32 value);
        partial void OnProductIdChanged();
    
        /// <summary>
        /// Primary key. Indicates the manufacturing process sequence.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Int16 OperationSequence
        {
            get
            {
                return _OperationSequence;
            }
            set
            {
                if (_OperationSequence != value)
                {
                    OnOperationSequenceChanging(value);
                    ReportPropertyChanging("OperationSequence");
                    _OperationSequence = StructuralObject.SetValidValue(value);
                    ReportPropertyChanged("OperationSequence");
                    OnOperationSequenceChanged();
                }
            }
        }
        private global::System.Int16 _OperationSequence;
        partial void OnOperationSequenceChanging(global::System.Int16 value);
        partial void OnOperationSequenceChanged();
    
        /// <summary>
        /// Planned manufacturing start date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ScheduledStartDate
        {
            get
            {
                return _ScheduledStartDate;
            }
            set
            {
                OnScheduledStartDateChanging(value);
                ReportPropertyChanging("ScheduledStartDate");
                _ScheduledStartDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ScheduledStartDate");
                OnScheduledStartDateChanged();
            }
        }
        private global::System.DateTime _ScheduledStartDate;
        partial void OnScheduledStartDateChanging(global::System.DateTime value);
        partial void OnScheduledStartDateChanged();
    
        /// <summary>
        /// Planned manufacturing end date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ScheduledEndDate
        {
            get
            {
                return _ScheduledEndDate;
            }
            set
            {
                OnScheduledEndDateChanging(value);
                ReportPropertyChanging("ScheduledEndDate");
                _ScheduledEndDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ScheduledEndDate");
                OnScheduledEndDateChanged();
            }
        }
        private global::System.DateTime _ScheduledEndDate;
        partial void OnScheduledEndDateChanging(global::System.DateTime value);
        partial void OnScheduledEndDateChanged();
    
        /// <summary>
        /// Actual start date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> ActualStartDate
        {
            get
            {
                return _ActualStartDate;
            }
            set
            {
                OnActualStartDateChanging(value);
                ReportPropertyChanging("ActualStartDate");
                _ActualStartDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ActualStartDate");
                OnActualStartDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _ActualStartDate;
        partial void OnActualStartDateChanging(Nullable<global::System.DateTime> value);
        partial void OnActualStartDateChanged();
    
        /// <summary>
        /// Actual end date.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.DateTime> ActualEndDate
        {
            get
            {
                return _ActualEndDate;
            }
            set
            {
                OnActualEndDateChanging(value);
                ReportPropertyChanging("ActualEndDate");
                _ActualEndDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ActualEndDate");
                OnActualEndDateChanged();
            }
        }
        private Nullable<global::System.DateTime> _ActualEndDate;
        partial void OnActualEndDateChanging(Nullable<global::System.DateTime> value);
        partial void OnActualEndDateChanged();
    
        /// <summary>
        /// Number of manufacturing hours used.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.Decimal> ActualResourceHrs
        {
            get
            {
                return _ActualResourceHrs;
            }
            set
            {
                OnActualResourceHrsChanging(value);
                ReportPropertyChanging("ActualResourceHrs");
                _ActualResourceHrs = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ActualResourceHrs");
                OnActualResourceHrsChanged();
            }
        }
        private Nullable<global::System.Decimal> _ActualResourceHrs;
        partial void OnActualResourceHrsChanging(Nullable<global::System.Decimal> value);
        partial void OnActualResourceHrsChanged();
    
        /// <summary>
        /// Estimated manufacturing cost.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.Decimal PlannedCost
        {
            get
            {
                return _PlannedCost;
            }
            set
            {
                OnPlannedCostChanging(value);
                ReportPropertyChanging("PlannedCost");
                _PlannedCost = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("PlannedCost");
                OnPlannedCostChanged();
            }
        }
        private global::System.Decimal _PlannedCost;
        partial void OnPlannedCostChanging(global::System.Decimal value);
        partial void OnPlannedCostChanged();
    
        /// <summary>
        /// Actual manufacturing cost.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
        [DataMemberAttribute()]
        public Nullable<global::System.Decimal> ActualCost
        {
            get
            {
                return _ActualCost;
            }
            set
            {
                OnActualCostChanging(value);
                ReportPropertyChanging("ActualCost");
                _ActualCost = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ActualCost");
                OnActualCostChanged();
            }
        }
        private Nullable<global::System.Decimal> _ActualCost;
        partial void OnActualCostChanging(Nullable<global::System.Decimal> value);
        partial void OnActualCostChanged();
    
        /// <summary>
        /// Date and time the record was last updated.
        /// </summary>
        [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
        [DataMemberAttribute()]
        public global::System.DateTime ModifiedDate
        {
            get
            {
                return _ModifiedDate;
            }
            set
            {
                OnModifiedDateChanging(value);
                ReportPropertyChanging("ModifiedDate");
                _ModifiedDate = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("ModifiedDate");
                OnModifiedDateChanged();
            }
        }
        private global::System.DateTime _ModifiedDate;
        partial void OnModifiedDateChanging(global::System.DateTime value);
        partial void OnModifiedDateChanged();

        #endregion
    
        #region Navigation Properties
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "WorkOrderRouting_LocationId", "Location")]
        public Location LocationIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Location>("MyProject4Model.WorkOrderRouting_LocationId", "Location").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Location>("MyProject4Model.WorkOrderRouting_LocationId", "Location").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<Location> LocationIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<Location>("MyProject4Model.WorkOrderRouting_LocationId", "Location");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<Location>("MyProject4Model.WorkOrderRouting_LocationId", "Location", value);
                }
            }
        }
    
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [XmlIgnoreAttribute()]
        [SoapIgnoreAttribute()]
        [DataMemberAttribute()]
        [EdmRelationshipNavigationPropertyAttribute("MyProject4Model", "WorkOrderRouting_WorkOrderId", "WorkOrder")]
        public WorkOrder WorkOrderIdObject
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<WorkOrder>("MyProject4Model.WorkOrderRouting_WorkOrderId", "WorkOrder").Value;
            }
            set
            {
                ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<WorkOrder>("MyProject4Model.WorkOrderRouting_WorkOrderId", "WorkOrder").Value = value;
            }
        }
        /// <summary>
        /// No Metadata Documentation available.
        /// </summary>
        [BrowsableAttribute(false)]
        [DataMemberAttribute()]
        public EntityReference<WorkOrder> WorkOrderIdObjectReference
        {
            get
            {
                return ((IEntityWithRelationships)this).RelationshipManager.GetRelatedReference<WorkOrder>("MyProject4Model.WorkOrderRouting_WorkOrderId", "WorkOrder");
            }
            set
            {
                if ((value != null))
                {
                    ((IEntityWithRelationships)this).RelationshipManager.InitializeRelatedReference<WorkOrder>("MyProject4Model.WorkOrderRouting_WorkOrderId", "WorkOrder", value);
                }
            }
        }

        #endregion
    }

    #endregion
    
}

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

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

License

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

Share

About the Author

Xomega Team
Architect Xomega.Net
United States United States
Xomega Team is striving to increase productivity and development quality by utilizing Model Driven Development coupled with Code Generation and the best design practices for application development.
We provide MDD tools, code generators and frameworks for Visual Studio and .Net development.
Visit us at http://www.xomega.net
Group type: Organisation

1 members

Follow on   Twitter

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.141216.1 | Last Updated 30 Apr 2013
Article Copyright 2013 by Xomega Team
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid