关于设计模式,先写个提纲,以后一定补上,实在是没精力了
今天是国庆长假的最后一天了,在这个全国人民都娱乐的节日里,我几乎每天只休息6个小时,不停的看书。《C#高级编程(第6版)》,《Microsoft .Net 企业级应用架构设计》、《敏捷软件开发:原则、模式与实践(C#版)》,中间还看了大量的博客文章及研究了两个重要的控件Farpoint Spread、Aspose Words,研究了最新的Code first 模式的ADO .Net Entity Framework。脑袋彻底的不听使唤了。今天在看软件设计模式的几个实现方式:Interface、Factory、Composite、OBServer、AbstractServer、Adapter、Bridge模式的时候,看得时候是频频点头,不能放下,但是看完了,几乎什么都记不住,悲哀呀。
所以我国庆假期结束后,还得再看一下,然后些一个好一点的学习笔记跟大家讨论。
顺便贴一段昨天些的代码,跟大家简单分享!
代码中使用的是Sql to Linq,没有使用ADO .net EntityFramework code first,其实我是想使用的,那样更简单,不过作为本例,我是为了测试Spread控件的分组功能在各种数据模式下的应用,所以就懒得写代码了,直接生成了sql to linq数据对象。
form1.cs:
Codeusing System; using System.Drawing; using System.Windows.Forms; using System.Diagnostics; //.Sql; namespace testspread5cn { public partial class Form1 : Form { private NorthwindDBDataContext db; private Stopwatch sw = new Stopwatch(); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { } private void Form1_Load(object sender, EventArgs e) { //SetSpreadStyle(); SetGenaralStyle(); sw.Start(); db = new NorthwindDBDataContext(); sw.Stop(); Debug.WriteLine("连接数据库时间消耗{0}毫秒", sw.ElapsedMilliseconds); } private void SetGenaralStyle() { fpSpread1.Sheets[0].OperationMode = FarPoint.Win.Spread.OperationMode.RowMode;//.SingleSelect; //'Single Select Listbox mode fpSpread1.Sheets[0].RowHeader.AutoText = FarPoint.Win.Spread.HeaderAutoText.Blank; // 'Se alternating row colors fpSpread1.Sheets[0].AlternatingRows.Count = 2; fpSpread1.Sheets[0].AlternatingRows[0].BackColor = Color.FromArgb(192, 192, 255); fpSpread1.Sheets[0].AlternatingRows[0].ForeColor = Color.FromArgb(0, 0, 0); fpSpread1.Sheets[0].AlternatingRows[1].BackColor = Color.FromArgb(255, 255, 192); fpSpread1.Sheets[0].AlternatingRows[1].ForeColor = Color.FromArgb(0, 0, 0); fpSpread1.Sheets[0].Rows.Default.Height = 30; //'Init cell note appearance fpSpread1.TextTipPolicy = FarPoint.Win.Spread.TextTipPolicy.Fixed; //'Show scroll bars when needed fpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; //fpSpread1.Sheets[0].DataAutoHeadings = false; //fpSpread1.Sheets[0].ColumnHeaderVisible=false;// .ColumnHeader.Cells[0, 1].Text = "公司"; fpSpread1.Sheets[0].ColumnCount = 8; } private void SetSpreadStyle() { // Set the number of rows in the column header. fpSpread1.ActiveSheet.ColumnHeader.RowCount = 3; // Set the number of columns in the row header. fpSpread1.ActiveSheet.RowHeader.ColumnCount = 2; // Define the labels for the spanned column header cells. fpSpread1.ActiveSheet.ColumnHeader.Cells[2, 0].Text = "East"; fpSpread1.ActiveSheet.ColumnHeader.Cells[2, 1].Text = "West"; fpSpread1.ActiveSheet.ColumnHeader.Cells[2, 2].Text = "East"; fpSpread1.ActiveSheet.ColumnHeader.Cells[2, 3].Text = "West"; fpSpread1.ActiveSheet.ColumnHeader.Cells[2, 4].Text = "East"; fpSpread1.ActiveSheet.ColumnHeader.Cells[2, 5].Text = "West"; fpSpread1.ActiveSheet.ColumnHeader.Cells[2, 6].Text = "East"; fpSpread1.ActiveSheet.ColumnHeader.Cells[2, 7].Text = "West"; fpSpread1.ActiveSheet.ColumnHeader.Cells[1, 0].Text = "1st Quarter"; fpSpread1.ActiveSheet.ColumnHeader.Cells[1, 2].Text = "2nd Quarter"; fpSpread1.ActiveSheet.ColumnHeader.Cells[1, 4].Text = "3rd Quarter"; fpSpread1.ActiveSheet.ColumnHeader.Cells[1, 6].Text = "4th Quarter"; fpSpread1.ActiveSheet.ColumnHeader.Cells[0, 0].Text = "Fiscal Year 2004"; // Define the column header cell spans. fpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 0, 1, 2); fpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 2, 1, 2); fpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 4, 1, 2); fpSpread1.ActiveSheet.AddColumnHeaderSpanCell(1, 6, 1, 2); fpSpread1.ActiveSheet.AddColumnHeaderSpanCell(0, 0, 1, 8); // Define the label for the spanned row header cells. fpSpread1.ActiveSheet.RowHeader.Cells[0, 0].Text = "Branch #"; // Define the row header cell span. fpSpread1.ActiveSheet.AddRowHeaderSpanCell(0, 0, 12, 1); } private void button1_Click_1(object sender, EventArgs e) { LoadOrder(); } private void LoadOrder() { sw.Reset(); sw.Start(); //var query = db.Orders; //orderby o.OrderID select o; //group o by o.OrderID into g //select new { g.Key,g.AsQueryable< };//new { orderkey = g.Key, unitPriceTotal = g.Sum(pkg => pkg.UnitPrice), quantityTotal = g.Sum(pkg => pkg.Quantity), details = g }; fpSpread1.DataSource = db.Categories;//.Orders;//query; sw.Stop(); Debug.WriteLine("查询消耗了{0}毫秒", sw.ElapsedMilliseconds); //WriteFromLinq(query); } private void WriteFromLinq(System.Data.Linq.Table<Orders> query) { sw.Reset(); sw.Start(); int i = 0; foreach (var queryItem in query) { i++; fpSpread1.Sheets[0].RowCount = i + 1; fpSpread1.Sheets[0].Rows[i].BackColor = Color.GreenYellow; fpSpread1.Sheets[0].Cells[i, 0].Value = queryItem.OrderID;//.orderkey; fpSpread1.Sheets[0].Cells[i, 2].Value = queryItem.OrderDate;//.unitPriceTotal; fpSpread1.Sheets[0].Cells[i, 3].Value = queryItem.ShipCity;//.quantityTotal; foreach (var orderDetailItem in queryItem.Order_Details) { i++; fpSpread1.Sheets[0].RowCount = i + 1; // fpSpread1.Sheets[0].Cells[i, 0].Value = orderDetailItem.OrderID; fpSpread1.Sheets[0].Cells[i, 1].Value = orderDetailItem.ProductID; fpSpread1.Sheets[0].Cells[i, 2].Value = orderDetailItem.UnitPrice; fpSpread1.Sheets[0].Cells[i, 3].Value = orderDetailItem.Quantity.ToString("F"); fpSpread1.Sheets[0].Cells[i, 4].Value = orderDetailItem.Discount.ToString("F"); } //fpSpread1.Refresh(); } sw.Stop(); Debug.WriteLine("写入表格消耗了{0}毫秒", sw.ElapsedMilliseconds); } private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { LoadOrder(); } private void backgroundWorker1_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) { button1.Enabled = true; } private void fpSpread1_Change(object sender, FarPoint.Win.Spread.ChangeEventArgs e) { db.SubmitChanges(); } } }
NorthwindDB.Designer.cs:
NorhthwindDB.Degigner.cs:#pragma warning disable 1591 //------------------------------------------------------------------------------ // <auto-generated> // 此?代洙?码?由?工¤具?生Θ?成é。£ // 运?行D时骸?版?本?:4.0.30319.235 // // 对?此?文?件t的?更ü改?可é能ü会á导?致?不?正y确ā?的?行D为a,?并¢且ò如?果? // 重?新?生Θ?成é代洙?码?,?这a些?更ü改?将?会á丢a失骸?。£ // </auto-generated> //------------------------------------------------------------------------------ namespace testspread5cn { using System.Data.Linq; using System.Data.Linq.Mapping; using System.Data; using System.Collections.Generic; using System.Reflection; using System.Linq; using System.Linq.Expressions; using System.ComponentModel; using System; [global::System.Data.Linq.Mapping.DatabaseAttribute(Name="Northwind")] public partial class NorthwindDBDataContext : System.Data.Linq.DataContext { private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource(); #region 可é扩?展1性?方?法ぁ?定¨义? partial void OnCreated(); partial void InsertOrders(Orders instance); partial void UpdateOrders(Orders instance); partial void DeleteOrders(Orders instance); partial void InsertOrder_Details(Order_Details instance); partial void UpdateOrder_Details(Order_Details instance); partial void DeleteOrder_Details(Order_Details instance); partial void InsertCategories(Categories instance); partial void UpdateCategories(Categories instance); partial void DeleteCategories(Categories instance); partial void InsertProducts(Products instance); partial void UpdateProducts(Products instance); partial void DeleteProducts(Products instance); partial void InsertCustomers(Customers instance); partial void UpdateCustomers(Customers instance); partial void DeleteCustomers(Customers instance); #endregion public NorthwindDBDataContext() : base(global::testspread5cn.Properties.Settings.Default.NorthwindConnectionString, mappingSource) { OnCreated(); } public NorthwindDBDataContext(string connection) : base(connection, mappingSource) { OnCreated(); } public NorthwindDBDataContext(System.Data.IDbConnection connection) : base(connection, mappingSource) { OnCreated(); } public NorthwindDBDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : base(connection, mappingSource) { OnCreated(); } public NorthwindDBDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : base(connection, mappingSource) { OnCreated(); } public System.Data.Linq.Table<Orders> Orders { get { return this.GetTable<Orders>(); } } public System.Data.Linq.Table<Order_Details> Order_Details { get { return this.GetTable<Order_Details>(); } } public System.Data.Linq.Table<Categories> Categories { get { return this.GetTable<Categories>(); } } public System.Data.Linq.Table<Products> Products { get { return this.GetTable<Products>(); } } public System.Data.Linq.Table<Customers> Customers { get { return this.GetTable<Customers>(); } } } [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Orders")] public partial class Orders : INotifyPropertyChanging, INotifyPropertyChanged { private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); private int _OrderID; private string _CustomerID; private System.Nullable<int> _EmployeeID; private System.Nullable<System.DateTime> _OrderDate; private System.Nullable<System.DateTime> _RequiredDate; private System.Nullable<System.DateTime> _ShippedDate; private System.Nullable<int> _ShipVia; private System.Nullable<decimal> _Freight; private string _ShipName; private string _ShipAddress; private string _ShipCity; private string _ShipRegion; private string _ShipPostalCode; private string _ShipCountry; private EntitySet<Order_Details> _Order_Details; private EntityRef<Customers> _Customers; #region 可é扩?展1性?方?法ぁ?定¨义? partial void OnLoaded(); partial void OnValidate(System.Data.Linq.ChangeAction action); partial void OnCreated(); partial void OnOrderIDChanging(int value); partial void OnOrderIDChanged(); partial void OnCustomerIDChanging(string value); partial void OnCustomerIDChanged(); partial void OnEmployeeIDChanging(System.Nullable<int> value); partial void OnEmployeeIDChanged(); partial void OnOrderDateChanging(System.Nullable<System.DateTime> value); partial void OnOrderDateChanged(); partial void OnRequiredDateChanging(System.Nullable<System.DateTime> value); partial void OnRequiredDateChanged(); partial void OnShippedDateChanging(System.Nullable<System.DateTime> value); partial void OnShippedDateChanged(); partial void OnShipViaChanging(System.Nullable<int> value); partial void OnShipViaChanged(); partial void OnFreightChanging(System.Nullable<decimal> value); partial void OnFreightChanged(); partial void OnShipNameChanging(string value); partial void OnShipNameChanged(); partial void OnShipAddressChanging(string value); partial void OnShipAddressChanged(); partial void OnShipCityChanging(string value); partial void OnShipCityChanged(); partial void OnShipRegionChanging(string value); partial void OnShipRegionChanged(); partial void OnShipPostalCodeChanging(string value); partial void OnShipPostalCodeChanged(); partial void OnShipCountryChanging(string value); partial void OnShipCountryChanged(); #endregion public Orders() { this._Order_Details = new EntitySet<Order_Details>(new Action<Order_Details>(this.attach_Order_Details), new Action<Order_Details>(this.detach_Order_Details)); this._Customers = default(EntityRef<Customers>); OnCreated(); } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)] public int OrderID { get { return this._OrderID; } set { if ((this._OrderID != value)) { this.OnOrderIDChanging(value); this.SendPropertyChanging(); this._OrderID = value; this.SendPropertyChanged("OrderID"); this.OnOrderIDChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerID", DbType="NChar(5)")] public string CustomerID { get { return this._CustomerID; } set { if ((this._CustomerID != value)) { if (this._Customers.HasLoadedOrAssignedValue) { throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); } this.OnCustomerIDChanging(value); this.SendPropertyChanging(); this._CustomerID = value; this.SendPropertyChanged("CustomerID"); this.OnCustomerIDChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_EmployeeID", DbType="Int")] public System.Nullable<int> EmployeeID { get { return this._EmployeeID; } set { if ((this._EmployeeID != value)) { this.OnEmployeeIDChanging(value); this.SendPropertyChanging(); this._EmployeeID = value; this.SendPropertyChanged("EmployeeID"); this.OnEmployeeIDChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderDate", DbType="DateTime")] public System.Nullable<System.DateTime> OrderDate { get { return this._OrderDate; } set { if ((this._OrderDate != value)) { this.OnOrderDateChanging(value); this.SendPropertyChanging(); this._OrderDate = value; this.SendPropertyChanged("OrderDate"); this.OnOrderDateChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RequiredDate", DbType="DateTime")] public System.Nullable<System.DateTime> RequiredDate { get { return this._RequiredDate; } set { if ((this._RequiredDate != value)) { this.OnRequiredDateChanging(value); this.SendPropertyChanging(); this._RequiredDate = value; this.SendPropertyChanged("RequiredDate"); this.OnRequiredDateChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShippedDate", DbType="DateTime")] public System.Nullable<System.DateTime> ShippedDate { get { return this._ShippedDate; } set { if ((this._ShippedDate != value)) { this.OnShippedDateChanging(value); this.SendPropertyChanging(); this._ShippedDate = value; this.SendPropertyChanged("ShippedDate"); this.OnShippedDateChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShipVia", DbType="Int")] public System.Nullable<int> ShipVia { get { return this._ShipVia; } set { if ((this._ShipVia != value)) { this.OnShipViaChanging(value); this.SendPropertyChanging(); this._ShipVia = value; this.SendPropertyChanged("ShipVia"); this.OnShipViaChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Freight", DbType="Money")] public System.Nullable<decimal> Freight { get { return this._Freight; } set { if ((this._Freight != value)) { this.OnFreightChanging(value); this.SendPropertyChanging(); this._Freight = value; this.SendPropertyChanged("Freight"); this.OnFreightChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShipName", DbType="NVarChar(40)")] public string ShipName { get { return this._ShipName; } set { if ((this._ShipName != value)) { this.OnShipNameChanging(value); this.SendPropertyChanging(); this._ShipName = value; this.SendPropertyChanged("ShipName"); this.OnShipNameChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShipAddress", DbType="NVarChar(60)")] public string ShipAddress { get { return this._ShipAddress; } set { if ((this._ShipAddress != value)) { this.OnShipAddressChanging(value); this.SendPropertyChanging(); this._ShipAddress = value; this.SendPropertyChanged("ShipAddress"); this.OnShipAddressChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShipCity", DbType="NVarChar(15)")] public string ShipCity { get { return this._ShipCity; } set { if ((this._ShipCity != value)) { this.OnShipCityChanging(value); this.SendPropertyChanging(); this._ShipCity = value; this.SendPropertyChanged("ShipCity"); this.OnShipCityChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShipRegion", DbType="NVarChar(15)")] public string ShipRegion { get { return this._ShipRegion; } set { if ((this._ShipRegion != value)) { this.OnShipRegionChanging(value); this.SendPropertyChanging(); this._ShipRegion = value; this.SendPropertyChanged("ShipRegion"); this.OnShipRegionChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShipPostalCode", DbType="NVarChar(10)")] public string ShipPostalCode { get { return this._ShipPostalCode; } set { if ((this._ShipPostalCode != value)) { this.OnShipPostalCodeChanging(value); this.SendPropertyChanging(); this._ShipPostalCode = value; this.SendPropertyChanged("ShipPostalCode"); this.OnShipPostalCodeChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ShipCountry", DbType="NVarChar(15)")] public string ShipCountry { get { return this._ShipCountry; } set { if ((this._ShipCountry != value)) { this.OnShipCountryChanging(value); this.SendPropertyChanging(); this._ShipCountry = value; this.SendPropertyChanged("ShipCountry"); this.OnShipCountryChanged(); } } } [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Orders_Order_Details", Storage="_Order_Details", ThisKey="OrderID", OtherKey="OrderID")] public EntitySet<Order_Details> Order_Details { get { return this._Order_Details; } set { this._Order_Details.Assign(value); } } [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Customers_Orders", Storage="_Customers", ThisKey="CustomerID", OtherKey="CustomerID", IsForeignKey=true)] public Customers Customers { get { return this._Customers.Entity; } set { Customers previousValue = this._Customers.Entity; if (((previousValue != value) || (this._Customers.HasLoadedOrAssignedValue == false))) { this.SendPropertyChanging(); if ((previousValue != null)) { this._Customers.Entity = null; previousValue.Orders.Remove(this); } this._Customers.Entity = value; if ((value != null)) { value.Orders.Add(this); this._CustomerID = value.CustomerID; } else { this._CustomerID = default(string); } this.SendPropertyChanged("Customers"); } } } public event PropertyChangingEventHandler PropertyChanging; public event PropertyChangedEventHandler PropertyChanged; protected virtual void SendPropertyChanging() { if ((this.PropertyChanging != null)) { this.PropertyChanging(this, emptyChangingEventArgs); } } protected virtual void SendPropertyChanged(String propertyName) { if ((this.PropertyChanged != null)) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } private void attach_Order_Details(Order_Details entity) { this.SendPropertyChanging(); entity.Orders = this; } private void detach_Order_Details(Order_Details entity) { this.SendPropertyChanging(); entity.Orders = null; } } [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.[Order Details]")] public partial class Order_Details : INotifyPropertyChanging, INotifyPropertyChanged { private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); private int _OrderID; private int _ProductID; private decimal _UnitPrice; private short _Quantity; private float _Discount; private EntityRef<Orders> _Orders; private EntityRef<Products> _Products; #region 可é扩?展1性?方?法ぁ?定¨义? partial void OnLoaded(); partial void OnValidate(System.Data.Linq.ChangeAction action); partial void OnCreated(); partial void OnOrderIDChanging(int value); partial void OnOrderIDChanged(); partial void OnProductIDChanging(int value); partial void OnProductIDChanged(); partial void OnUnitPriceChanging(decimal value); partial void OnUnitPriceChanged(); partial void OnQuantityChanging(short value); partial void OnQuantityChanged(); partial void OnDiscountChanging(float value); partial void OnDiscountChanged(); #endregion public Order_Details() { this._Orders = default(EntityRef<Orders>); this._Products = default(EntityRef<Products>); OnCreated(); } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_OrderID", DbType="Int NOT NULL", IsPrimaryKey=true)] public int OrderID { get { return this._OrderID; } set { if ((this._OrderID != value)) { if (this._Orders.HasLoadedOrAssignedValue) { throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); } this.OnOrderIDChanging(value); this.SendPropertyChanging(); this._OrderID = value; this.SendPropertyChanged("OrderID"); this.OnOrderIDChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductID", DbType="Int NOT NULL", IsPrimaryKey=true)] public int ProductID { get { return this._ProductID; } set { if ((this._ProductID != value)) { if (this._Products.HasLoadedOrAssignedValue) { throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); } this.OnProductIDChanging(value); this.SendPropertyChanging(); this._ProductID = value; this.SendPropertyChanged("ProductID"); this.OnProductIDChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitPrice", DbType="Money NOT NULL")] public decimal UnitPrice { get { return this._UnitPrice; } set { if ((this._UnitPrice != value)) { this.OnUnitPriceChanging(value); this.SendPropertyChanging(); this._UnitPrice = value; this.SendPropertyChanged("UnitPrice"); this.OnUnitPriceChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Quantity", DbType="SmallInt NOT NULL")] public short Quantity { get { return this._Quantity; } set { if ((this._Quantity != value)) { this.OnQuantityChanging(value); this.SendPropertyChanging(); this._Quantity = value; this.SendPropertyChanged("Quantity"); this.OnQuantityChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Discount", DbType="Real NOT NULL")] public float Discount { get { return this._Discount; } set { if ((this._Discount != value)) { this.OnDiscountChanging(value); this.SendPropertyChanging(); this._Discount = value; this.SendPropertyChanged("Discount"); this.OnDiscountChanged(); } } } [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Orders_Order_Details", Storage="_Orders", ThisKey="OrderID", OtherKey="OrderID", IsForeignKey=true)] public Orders Orders { get { return this._Orders.Entity; } set { Orders previousValue = this._Orders.Entity; if (((previousValue != value) || (this._Orders.HasLoadedOrAssignedValue == false))) { this.SendPropertyChanging(); if ((previousValue != null)) { this._Orders.Entity = null; previousValue.Order_Details.Remove(this); } this._Orders.Entity = value; if ((value != null)) { value.Order_Details.Add(this); this._OrderID = value.OrderID; } else { this._OrderID = default(int); } this.SendPropertyChanged("Orders"); } } } [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Products_Order_Details", Storage="_Products", ThisKey="ProductID", OtherKey="ProductID", IsForeignKey=true)] public Products Products { get { return this._Products.Entity; } set { Products previousValue = this._Products.Entity; if (((previousValue != value) || (this._Products.HasLoadedOrAssignedValue == false))) { this.SendPropertyChanging(); if ((previousValue != null)) { this._Products.Entity = null; previousValue.Order_Details.Remove(this); } this._Products.Entity = value; if ((value != null)) { value.Order_Details.Add(this); this._ProductID = value.ProductID; } else { this._ProductID = default(int); } this.SendPropertyChanged("Products"); } } } public event PropertyChangingEventHandler PropertyChanging; public event PropertyChangedEventHandler PropertyChanged; protected virtual void SendPropertyChanging() { if ((this.PropertyChanging != null)) { this.PropertyChanging(this, emptyChangingEventArgs); } } protected virtual void SendPropertyChanged(String propertyName) { if ((this.PropertyChanged != null)) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } } [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Categories")] public partial class Categories : INotifyPropertyChanging, INotifyPropertyChanged { private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); private int _CategoryID; private string _CategoryName; private string _Description; private System.Data.Linq.Binary _Picture; private EntitySet<Products> _Products; #region 可é扩?展1性?方?法ぁ?定¨义? partial void OnLoaded(); partial void OnValidate(System.Data.Linq.ChangeAction action); partial void OnCreated(); partial void OnCategoryIDChanging(int value); partial void OnCategoryIDChanged(); partial void OnCategoryNameChanging(string value); partial void OnCategoryNameChanged(); partial void OnDescriptionChanging(string value); partial void OnDescriptionChanged(); partial void OnPictureChanging(System.Data.Linq.Binary value); partial void OnPictureChanged(); #endregion public Categories() { this._Products = new EntitySet<Products>(new Action<Products>(this.attach_Products), new Action<Products>(this.detach_Products)); OnCreated(); } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CategoryID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)] public int CategoryID { get { return this._CategoryID; } set { if ((this._CategoryID != value)) { this.OnCategoryIDChanging(value); this.SendPropertyChanging(); this._CategoryID = value; this.SendPropertyChanged("CategoryID"); this.OnCategoryIDChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CategoryName", DbType="NVarChar(15) NOT NULL", CanBeNull=false)] public string CategoryName { get { return this._CategoryName; } set { if ((this._CategoryName != value)) { this.OnCategoryNameChanging(value); this.SendPropertyChanging(); this._CategoryName = value; this.SendPropertyChanged("CategoryName"); this.OnCategoryNameChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Description", DbType="NText", UpdateCheck=UpdateCheck.Never)] public string Description { get { return this._Description; } set { if ((this._Description != value)) { this.OnDescriptionChanging(value); this.SendPropertyChanging(); this._Description = value; this.SendPropertyChanged("Description"); this.OnDescriptionChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Picture", DbType="Image", UpdateCheck=UpdateCheck.Never)] public System.Data.Linq.Binary Picture { get { return this._Picture; } set { if ((this._Picture != value)) { this.OnPictureChanging(value); this.SendPropertyChanging(); this._Picture = value; this.SendPropertyChanged("Picture"); this.OnPictureChanged(); } } } [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Categories_Products", Storage="_Products", ThisKey="CategoryID", OtherKey="CategoryID")] public EntitySet<Products> Products { get { return this._Products; } set { this._Products.Assign(value); } } public event PropertyChangingEventHandler PropertyChanging; public event PropertyChangedEventHandler PropertyChanged; protected virtual void SendPropertyChanging() { if ((this.PropertyChanging != null)) { this.PropertyChanging(this, emptyChangingEventArgs); } } protected virtual void SendPropertyChanged(String propertyName) { if ((this.PropertyChanged != null)) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } private void attach_Products(Products entity) { this.SendPropertyChanging(); entity.Categories = this; } private void detach_Products(Products entity) { this.SendPropertyChanging(); entity.Categories = null; } } [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Products")] public partial class Products : INotifyPropertyChanging, INotifyPropertyChanged { private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); private int _ProductID; private string _ProductName; private System.Nullable<int> _SupplierID; private System.Nullable<int> _CategoryID; private string _QuantityPerUnit; private System.Nullable<decimal> _UnitPrice; private System.Nullable<short> _UnitsInStock; private System.Nullable<short> _UnitsOnOrder; private System.Nullable<short> _ReorderLevel; private bool _Discontinued; private EntitySet<Order_Details> _Order_Details; private EntityRef<Categories> _Categories; #region 可é扩?展1性?方?法ぁ?定¨义? partial void OnLoaded(); partial void OnValidate(System.Data.Linq.ChangeAction action); partial void OnCreated(); partial void OnProductIDChanging(int value); partial void OnProductIDChanged(); partial void OnProductNameChanging(string value); partial void OnProductNameChanged(); partial void OnSupplierIDChanging(System.Nullable<int> value); partial void OnSupplierIDChanged(); partial void OnCategoryIDChanging(System.Nullable<int> value); partial void OnCategoryIDChanged(); partial void OnQuantityPerUnitChanging(string value); partial void OnQuantityPerUnitChanged(); partial void OnUnitPriceChanging(System.Nullable<decimal> value); partial void OnUnitPriceChanged(); partial void OnUnitsInStockChanging(System.Nullable<short> value); partial void OnUnitsInStockChanged(); partial void OnUnitsOnOrderChanging(System.Nullable<short> value); partial void OnUnitsOnOrderChanged(); partial void OnReorderLevelChanging(System.Nullable<short> value); partial void OnReorderLevelChanged(); partial void OnDiscontinuedChanging(bool value); partial void OnDiscontinuedChanged(); #endregion public Products() { this._Order_Details = new EntitySet<Order_Details>(new Action<Order_Details>(this.attach_Order_Details), new Action<Order_Details>(this.detach_Order_Details)); this._Categories = default(EntityRef<Categories>); OnCreated(); } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)] public int ProductID { get { return this._ProductID; } set { if ((this._ProductID != value)) { this.OnProductIDChanging(value); this.SendPropertyChanging(); this._ProductID = value; this.SendPropertyChanged("ProductID"); this.OnProductIDChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProductName", DbType="NVarChar(40) NOT NULL", CanBeNull=false)] public string ProductName { get { return this._ProductName; } set { if ((this._ProductName != value)) { this.OnProductNameChanging(value); this.SendPropertyChanging(); this._ProductName = value; this.SendPropertyChanged("ProductName"); this.OnProductNameChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SupplierID", DbType="Int")] public System.Nullable<int> SupplierID { get { return this._SupplierID; } set { if ((this._SupplierID != value)) { this.OnSupplierIDChanging(value); this.SendPropertyChanging(); this._SupplierID = value; this.SendPropertyChanged("SupplierID"); this.OnSupplierIDChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CategoryID", DbType="Int")] public System.Nullable<int> CategoryID { get { return this._CategoryID; } set { if ((this._CategoryID != value)) { if (this._Categories.HasLoadedOrAssignedValue) { throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); } this.OnCategoryIDChanging(value); this.SendPropertyChanging(); this._CategoryID = value; this.SendPropertyChanged("CategoryID"); this.OnCategoryIDChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_QuantityPerUnit", DbType="NVarChar(20)")] public string QuantityPerUnit { get { return this._QuantityPerUnit; } set { if ((this._QuantityPerUnit != value)) { this.OnQuantityPerUnitChanging(value); this.SendPropertyChanging(); this._QuantityPerUnit = value; this.SendPropertyChanged("QuantityPerUnit"); this.OnQuantityPerUnitChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitPrice", DbType="Money")] public System.Nullable<decimal> UnitPrice { get { return this._UnitPrice; } set { if ((this._UnitPrice != value)) { this.OnUnitPriceChanging(value); this.SendPropertyChanging(); this._UnitPrice = value; this.SendPropertyChanged("UnitPrice"); this.OnUnitPriceChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitsInStock", DbType="SmallInt")] public System.Nullable<short> UnitsInStock { get { return this._UnitsInStock; } set { if ((this._UnitsInStock != value)) { this.OnUnitsInStockChanging(value); this.SendPropertyChanging(); this._UnitsInStock = value; this.SendPropertyChanged("UnitsInStock"); this.OnUnitsInStockChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitsOnOrder", DbType="SmallInt")] public System.Nullable<short> UnitsOnOrder { get { return this._UnitsOnOrder; } set { if ((this._UnitsOnOrder != value)) { this.OnUnitsOnOrderChanging(value); this.SendPropertyChanging(); this._UnitsOnOrder = value; this.SendPropertyChanged("UnitsOnOrder"); this.OnUnitsOnOrderChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ReorderLevel", DbType="SmallInt")] public System.Nullable<short> ReorderLevel { get { return this._ReorderLevel; } set { if ((this._ReorderLevel != value)) { this.OnReorderLevelChanging(value); this.SendPropertyChanging(); this._ReorderLevel = value; this.SendPropertyChanged("ReorderLevel"); this.OnReorderLevelChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Discontinued", DbType="Bit NOT NULL")] public bool Discontinued { get { return this._Discontinued; } set { if ((this._Discontinued != value)) { this.OnDiscontinuedChanging(value); this.SendPropertyChanging(); this._Discontinued = value; this.SendPropertyChanged("Discontinued"); this.OnDiscontinuedChanged(); } } } [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Products_Order_Details", Storage="_Order_Details", ThisKey="ProductID", OtherKey="ProductID")] public EntitySet<Order_Details> Order_Details { get { return this._Order_Details; } set { this._Order_Details.Assign(value); } } [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Categories_Products", Storage="_Categories", ThisKey="CategoryID", OtherKey="CategoryID", IsForeignKey=true)] public Categories Categories { get { return this._Categories.Entity; } set { Categories previousValue = this._Categories.Entity; if (((previousValue != value) || (this._Categories.HasLoadedOrAssignedValue == false))) { this.SendPropertyChanging(); if ((previousValue != null)) { this._Categories.Entity = null; previousValue.Products.Remove(this); } this._Categories.Entity = value; if ((value != null)) { value.Products.Add(this); this._CategoryID = value.CategoryID; } else { this._CategoryID = default(Nullable<int>); } this.SendPropertyChanged("Categories"); } } } public event PropertyChangingEventHandler PropertyChanging; public event PropertyChangedEventHandler PropertyChanged; protected virtual void SendPropertyChanging() { if ((this.PropertyChanging != null)) { this.PropertyChanging(this, emptyChangingEventArgs); } } protected virtual void SendPropertyChanged(String propertyName) { if ((this.PropertyChanged != null)) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } private void attach_Order_Details(Order_Details entity) { this.SendPropertyChanging(); entity.Products = this; } private void detach_Order_Details(Order_Details entity) { this.SendPropertyChanging(); entity.Products = null; } } [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Customers")] public partial class Customers : INotifyPropertyChanging, INotifyPropertyChanged { private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); private string _CustomerID; private string _CompanyName; private string _ContactName; private string _ContactTitle; private string _Address; private string _City; private string _Region; private string _PostalCode; private string _Country; private string _Phone; private string _Fax; private EntitySet<Orders> _Orders; #region 可é扩?展1性?方?法ぁ?定¨义? partial void OnLoaded(); partial void OnValidate(System.Data.Linq.ChangeAction action); partial void OnCreated(); partial void OnCustomerIDChanging(string value); partial void OnCustomerIDChanged(); partial void OnCompanyNameChanging(string value); partial void OnCompanyNameChanged(); partial void OnContactNameChanging(string value); partial void OnContactNameChanged(); partial void OnContactTitleChanging(string value); partial void OnContactTitleChanged(); partial void OnAddressChanging(string value); partial void OnAddressChanged(); partial void OnCityChanging(string value); partial void OnCityChanged(); partial void OnRegionChanging(string value); partial void OnRegionChanged(); partial void OnPostalCodeChanging(string value); partial void OnPostalCodeChanged(); partial void OnCountryChanging(string value); partial void OnCountryChanged(); partial void OnPhoneChanging(string value); partial void OnPhoneChanged(); partial void OnFaxChanging(string value); partial void OnFaxChanged(); #endregion public Customers() { this._Orders = new EntitySet<Orders>(new Action<Orders>(this.attach_Orders), new Action<Orders>(this.detach_Orders)); OnCreated(); } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CustomerID", DbType="NChar(5) NOT NULL", CanBeNull=false, IsPrimaryKey=true)] public string CustomerID { get { return this._CustomerID; } set { if ((this._CustomerID != value)) { this.OnCustomerIDChanging(value); this.SendPropertyChanging(); this._CustomerID = value; this.SendPropertyChanged("CustomerID"); this.OnCustomerIDChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CompanyName", DbType="NVarChar(40) NOT NULL", CanBeNull=false)] public string CompanyName { get { return this._CompanyName; } set { if ((this._CompanyName != value)) { this.OnCompanyNameChanging(value); this.SendPropertyChanging(); this._CompanyName = value; this.SendPropertyChanged("CompanyName"); this.OnCompanyNameChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ContactName", DbType="NVarChar(30)")] public string ContactName { get { return this._ContactName; } set { if ((this._ContactName != value)) { this.OnContactNameChanging(value); this.SendPropertyChanging(); this._ContactName = value; this.SendPropertyChanged("ContactName"); this.OnContactNameChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ContactTitle", DbType="NVarChar(30)")] public string ContactTitle { get { return this._ContactTitle; } set { if ((this._ContactTitle != value)) { this.OnContactTitleChanging(value); this.SendPropertyChanging(); this._ContactTitle = value; this.SendPropertyChanged("ContactTitle"); this.OnContactTitleChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Address", DbType="NVarChar(60)")] public string Address { get { return this._Address; } set { if ((this._Address != value)) { this.OnAddressChanging(value); this.SendPropertyChanging(); this._Address = value; this.SendPropertyChanged("Address"); this.OnAddressChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_City", DbType="NVarChar(15)")] public string City { get { return this._City; } set { if ((this._City != value)) { this.OnCityChanging(value); this.SendPropertyChanging(); this._City = value; this.SendPropertyChanged("City"); this.OnCityChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Region", DbType="NVarChar(15)")] public string Region { get { return this._Region; } set { if ((this._Region != value)) { this.OnRegionChanging(value); this.SendPropertyChanging(); this._Region = value; this.SendPropertyChanged("Region"); this.OnRegionChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PostalCode", DbType="NVarChar(10)")] public string PostalCode { get { return this._PostalCode; } set { if ((this._PostalCode != value)) { this.OnPostalCodeChanging(value); this.SendPropertyChanging(); this._PostalCode = value; this.SendPropertyChanged("PostalCode"); this.OnPostalCodeChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Country", DbType="NVarChar(15)")] public string Country { get { return this._Country; } set { if ((this._Country != value)) { this.OnCountryChanging(value); this.SendPropertyChanging(); this._Country = value; this.SendPropertyChanged("Country"); this.OnCountryChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Phone", DbType="NVarChar(24)")] public string Phone { get { return this._Phone; } set { if ((this._Phone != value)) { this.OnPhoneChanging(value); this.SendPropertyChanging(); this._Phone = value; this.SendPropertyChanged("Phone"); this.OnPhoneChanged(); } } } [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Fax", DbType="NVarChar(24)")] public string Fax { get { return this._Fax; } set { if ((this._Fax != value)) { this.OnFaxChanging(value); this.SendPropertyChanging(); this._Fax = value; this.SendPropertyChanged("Fax"); this.OnFaxChanged(); } } } [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Customers_Orders", Storage="_Orders", ThisKey="CustomerID", OtherKey="CustomerID")] public EntitySet<Orders> Orders { get { return this._Orders; } set { this._Orders.Assign(value); } } public event PropertyChangingEventHandler PropertyChanging; public event PropertyChangedEventHandler PropertyChanged; protected virtual void SendPropertyChanging() { if ((this.PropertyChanging != null)) { this.PropertyChanging(this, emptyChangingEventArgs); } } protected virtual void SendPropertyChanged(String propertyName) { if ((this.PropertyChanged != null)) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } private void attach_Orders(Orders entity) { this.SendPropertyChanging(); entity.Customers = this; } private void detach_Orders(Orders entity) { this.SendPropertyChanging(); entity.Customers = null; } } } #pragma warning restore 1591