Mercurial > pub > bltoolkit
comparison UnitTests/Linq/Model/Northwind.cs @ 0:f990fcb411a9
Копия текущей версии из github
| author | cin |
|---|---|
| date | Thu, 27 Mar 2014 21:46:09 +0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:f990fcb411a9 |
|---|---|
| 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 } |
