0
|
1 using System;
|
|
2 using System.Collections.Generic;
|
|
3 using System.Data.Linq;
|
|
4
|
|
5 using BLToolkit.DataAccess;
|
|
6 using BLToolkit.Mapping;
|
|
7
|
|
8 namespace Data.Linq.Model
|
|
9 {
|
|
10 public class Northwind
|
|
11 {
|
|
12 public abstract class EntityBase<T>
|
|
13 {
|
|
14 protected abstract T Key { get; }
|
|
15
|
|
16 public override bool Equals(object obj)
|
|
17 {
|
|
18 return GetType() == obj.GetType() && Key.Equals(((EntityBase<T>)obj).Key);
|
|
19 }
|
|
20
|
|
21 public override int GetHashCode()
|
|
22 {
|
|
23 return Key.GetHashCode();
|
|
24 }
|
|
25 }
|
|
26
|
|
27 [TableName("Categories")]
|
|
28 public class Category
|
|
29 {
|
|
30 [PrimaryKey, NonUpdatable] public int CategoryID;
|
|
31 [NotNull] public string CategoryName;
|
|
32 public string Description;
|
|
33 public Binary Picture;
|
|
34
|
|
35 [Association(ThisKey="CategoryID", OtherKey="CategoryID")]
|
|
36 public List<Product> Products;
|
|
37 }
|
|
38
|
|
39 [TableName("CustomerCustomerDemo")]
|
|
40 public class CustomerCustomerDemo
|
|
41 {
|
|
42 [PrimaryKey, NotNull] public string CustomerID;
|
|
43 [PrimaryKey, NotNull] public string CustomerTypeID;
|
|
44
|
|
45 [Association(ThisKey="CustomerTypeID", OtherKey="CustomerTypeID")]
|
|
46 public CustomerDemographic CustomerDemographics;
|
|
47
|
|
48 [Association(ThisKey="CustomerID", OtherKey="CustomerID")]
|
|
49 public Customer Customers;
|
|
50 }
|
|
51
|
|
52 [TableName("CustomerDemographics")]
|
|
53 public class CustomerDemographic
|
|
54 {
|
|
55 [PrimaryKey, NotNull] public string CustomerTypeID;
|
|
56 public string CustomerDesc;
|
|
57
|
|
58 [Association(ThisKey="CustomerTypeID", OtherKey="CustomerTypeID")]
|
|
59 public List<CustomerCustomerDemo> CustomerCustomerDemos;
|
|
60 }
|
|
61
|
|
62 [TableName("Customers")]
|
|
63 public class Customer : EntityBase<string>
|
|
64 {
|
|
65 [PrimaryKey] public string CustomerID;
|
|
66 [NotNull] public string CompanyName;
|
|
67 public string ContactName;
|
|
68 public string ContactTitle;
|
|
69 public string Address;
|
|
70 public string City;
|
|
71 public string Region;
|
|
72 public string PostalCode;
|
|
73 public string Country;
|
|
74 public string Phone;
|
|
75 public string Fax;
|
|
76
|
|
77 [Association(ThisKey="CustomerID", OtherKey="CustomerID")]
|
|
78 public List<CustomerCustomerDemo> CustomerCustomerDemos;
|
|
79
|
|
80 [Association(ThisKey="CustomerID", OtherKey="CustomerID")]
|
|
81 public List<Order> Orders;
|
|
82
|
|
83 protected override string Key
|
|
84 {
|
|
85 get { return CustomerID; }
|
|
86 }
|
|
87 }
|
|
88
|
|
89 [TableName("Employees")]
|
|
90 public class Employee : EntityBase<int>
|
|
91 {
|
|
92 [PrimaryKey, NonUpdatable] public int EmployeeID;
|
|
93 [NotNull] public string LastName;
|
|
94 [NotNull] public string FirstName;
|
|
95 public string Title;
|
|
96 public string TitleOfCourtesy;
|
|
97 public DateTime? BirthDate;
|
|
98 public DateTime? HireDate;
|
|
99 public string Address;
|
|
100 public string City;
|
|
101 public string Region;
|
|
102 public string PostalCode;
|
|
103 public string Country;
|
|
104 public string HomePhone;
|
|
105 public string Extension;
|
|
106 public Binary Photo;
|
|
107 public string Notes;
|
|
108 public int? ReportsTo;
|
|
109 public string PhotoPath;
|
|
110
|
|
111 [Association(ThisKey="EmployeeID", OtherKey="ReportsTo")] public List<Employee> Employees;
|
|
112 [Association(ThisKey="EmployeeID", OtherKey="EmployeeID")] public List<EmployeeTerritory> EmployeeTerritories;
|
|
113 [Association(ThisKey="EmployeeID", OtherKey="EmployeeID")] public List<Order> Orders;
|
|
114 [Association(ThisKey="ReportsTo", OtherKey="EmployeeID")] public Employee ReportsToEmployee;
|
|
115
|
|
116 //[MapIgnore]
|
|
117 protected override int Key
|
|
118 {
|
|
119 get { return EmployeeID; }
|
|
120 }
|
|
121 }
|
|
122
|
|
123 [TableName("EmployeeTerritories")]
|
|
124 public class EmployeeTerritory
|
|
125 {
|
|
126 [PrimaryKey] public int EmployeeID;
|
|
127 [PrimaryKey, NotNull] public string TerritoryID;
|
|
128
|
|
129 [Association(ThisKey="EmployeeID", OtherKey="EmployeeID")] public Employee Employee;
|
|
130 [Association(ThisKey="TerritoryID", OtherKey="TerritoryID")] public Territory Territory;
|
|
131 }
|
|
132
|
|
133 [TableName("Order Details")]
|
|
134 public class OrderDetail
|
|
135 {
|
|
136 [PrimaryKey] public int OrderID;
|
|
137 [PrimaryKey] public int ProductID;
|
|
138 public decimal UnitPrice;
|
|
139 public short Quantity;
|
|
140 public float Discount;
|
|
141
|
|
142 [Association(ThisKey="OrderID", OtherKey="OrderID")] public Order Order;
|
|
143 [Association(ThisKey="ProductID", OtherKey="ProductID")] public Product Product;
|
|
144 }
|
|
145
|
|
146 [TableName("Orders")]
|
|
147 public class Order : EntityBase<int>
|
|
148 {
|
|
149 [PrimaryKey, NonUpdatable] public int OrderID;
|
|
150 public string CustomerID;
|
|
151 public int? EmployeeID;
|
|
152 public DateTime? OrderDate;
|
|
153 public DateTime? RequiredDate;
|
|
154 public DateTime? ShippedDate;
|
|
155 public int? ShipVia;
|
|
156 public decimal Freight;
|
|
157 public string ShipName;
|
|
158 public string ShipAddress;
|
|
159 public string ShipCity;
|
|
160 public string ShipRegion;
|
|
161 public string ShipPostalCode;
|
|
162 public string ShipCountry;
|
|
163
|
|
164 [Association(ThisKey="OrderID", OtherKey="OrderID")] public List<OrderDetail> OrderDetails;
|
|
165 [Association(ThisKey="CustomerID", OtherKey="CustomerID", CanBeNull=false)] public Customer Customer;
|
|
166 [Association(ThisKey="EmployeeID", OtherKey="EmployeeID")] public Employee Employee;
|
|
167 [Association(ThisKey="ShipVia", OtherKey="ShipperID")] public Shipper Shipper;
|
|
168
|
|
169 protected override int Key
|
|
170 {
|
|
171 get { return OrderID; }
|
|
172 }
|
|
173 }
|
|
174
|
|
175 [TableName("Products")]
|
|
176 [InheritanceMapping(Code=true, Type=typeof(DiscontinuedProduct))]
|
|
177 [InheritanceMapping(Code=false, Type=typeof(ActiveProduct))]
|
|
178 public abstract class Product
|
|
179 {
|
|
180 [PrimaryKey, NonUpdatable] public int ProductID;
|
|
181 [NotNull] public string ProductName;
|
|
182 public int? SupplierID;
|
|
183 public int? CategoryID;
|
|
184 public string QuantityPerUnit;
|
|
185 public decimal? UnitPrice;
|
|
186 public short? UnitsInStock;
|
|
187 public short? UnitsOnOrder;
|
|
188 public short? ReorderLevel;
|
|
189 [MapField(IsInheritanceDiscriminator=true)] public bool Discontinued;
|
|
190
|
|
191 [Association(ThisKey="ProductID", OtherKey="ProductID")] public List<OrderDetail> OrderDetails;
|
|
192 [Association(ThisKey="CategoryID", OtherKey="CategoryID")] public Category Category;
|
|
193 [Association(ThisKey="SupplierID", OtherKey="SupplierID")] public Supplier Supplier;
|
|
194 }
|
|
195
|
|
196 public class ActiveProduct : Product {}
|
|
197 public class DiscontinuedProduct : Product {}
|
|
198
|
|
199 [TableName("Region")]
|
|
200 public class Region
|
|
201 {
|
|
202 [PrimaryKey] public int RegionID;
|
|
203 [NotNull] public string RegionDescription;
|
|
204
|
|
205 [Association(ThisKey="RegionID", OtherKey="RegionID")]
|
|
206 public List<Territory> Territories;
|
|
207 }
|
|
208
|
|
209 [TableName("Shippers")]
|
|
210 public class Shipper
|
|
211 {
|
|
212 [PrimaryKey, NonUpdatable] public int ShipperID;
|
|
213 [NotNull] public string CompanyName;
|
|
214 public string Phone;
|
|
215
|
|
216 [Association(ThisKey="ShipperID", OtherKey="ShipVia")]
|
|
217 public List<Order> Orders;
|
|
218 }
|
|
219
|
|
220 [TableName("Suppliers")]
|
|
221 public class Supplier
|
|
222 {
|
|
223 [PrimaryKey, NonUpdatable] public int SupplierID;
|
|
224 [NotNull] public string CompanyName;
|
|
225 public string ContactName;
|
|
226 public string ContactTitle;
|
|
227 public string Address;
|
|
228 public string City;
|
|
229 public string Region;
|
|
230 public string PostalCode;
|
|
231 public string Country;
|
|
232 public string Phone;
|
|
233 public string Fax;
|
|
234 public string HomePage;
|
|
235
|
|
236 [Association(ThisKey="SupplierID", OtherKey="SupplierID")]
|
|
237 public List<Product> Products;
|
|
238 }
|
|
239
|
|
240 [TableName("Territories")]
|
|
241 public class Territory
|
|
242 {
|
|
243 [PrimaryKey, NotNull] public string TerritoryID;
|
|
244 [NotNull] public string TerritoryDescription;
|
|
245 public int RegionID;
|
|
246
|
|
247 [Association(ThisKey="TerritoryID", OtherKey="TerritoryID")]
|
|
248 public List<EmployeeTerritory> EmployeeTerritories;
|
|
249
|
|
250 [Association(ThisKey="RegionID", OtherKey="RegionID")]
|
|
251 public Region Region;
|
|
252 }
|
|
253 }
|
|
254 }
|