diff UnitTests/Linq/Model/Northwind.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UnitTests/Linq/Model/Northwind.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,254 @@
+using System;
+using System.Collections.Generic;
+using System.Data.Linq;
+
+using BLToolkit.DataAccess;
+using BLToolkit.Mapping;
+
+namespace Data.Linq.Model
+{
+	public class Northwind
+	{
+		public abstract class EntityBase<T>
+		{
+			protected abstract T Key { get; }
+
+			public override bool Equals(object obj)
+			{
+				return GetType() == obj.GetType() && Key.Equals(((EntityBase<T>)obj).Key);
+			}
+
+			public override int GetHashCode()
+			{
+				return Key.GetHashCode();
+			}
+		}
+
+		[TableName("Categories")]
+		public class Category
+		{
+			[PrimaryKey, NonUpdatable] public int    CategoryID;
+			[NotNull]                  public string CategoryName;
+			                           public string Description;
+			                           public Binary Picture;
+
+			[Association(ThisKey="CategoryID", OtherKey="CategoryID")]
+			public List<Product> Products;
+		}
+
+		[TableName("CustomerCustomerDemo")]
+		public class CustomerCustomerDemo
+		{
+			[PrimaryKey, NotNull] public string CustomerID;
+			[PrimaryKey, NotNull] public string CustomerTypeID;
+
+			[Association(ThisKey="CustomerTypeID", OtherKey="CustomerTypeID")]
+			public CustomerDemographic CustomerDemographics;
+
+			[Association(ThisKey="CustomerID", OtherKey="CustomerID")]
+			public Customer Customers;
+		}
+
+		[TableName("CustomerDemographics")]
+		public class CustomerDemographic
+		{
+			[PrimaryKey, NotNull] public string CustomerTypeID;
+			                      public string CustomerDesc;
+			
+			[Association(ThisKey="CustomerTypeID", OtherKey="CustomerTypeID")]
+			public List<CustomerCustomerDemo> CustomerCustomerDemos;
+		}
+
+		[TableName("Customers")]
+		public class Customer : EntityBase<string>
+		{
+			[PrimaryKey] public string CustomerID;
+			[NotNull]    public string CompanyName;
+			             public string ContactName;
+			             public string ContactTitle;
+			             public string Address;
+			             public string City;
+			             public string Region;
+			             public string PostalCode;
+			             public string Country;
+			             public string Phone;
+			             public string Fax;
+
+			[Association(ThisKey="CustomerID", OtherKey="CustomerID")]
+			public List<CustomerCustomerDemo> CustomerCustomerDemos;
+
+			[Association(ThisKey="CustomerID", OtherKey="CustomerID")]
+			public List<Order> Orders;
+
+			protected override string Key
+			{
+				get { return CustomerID; }
+			}
+		}
+
+		[TableName("Employees")]
+		public class Employee : EntityBase<int>
+		{
+			[PrimaryKey, NonUpdatable] public int       EmployeeID;
+			[NotNull]                  public string    LastName;
+			[NotNull]                  public string    FirstName;
+			                           public string    Title;
+			                           public string    TitleOfCourtesy;
+			                           public DateTime? BirthDate;
+			                           public DateTime? HireDate;
+			                           public string    Address;
+			                           public string    City;
+			                           public string    Region;
+			                           public string    PostalCode;
+			                           public string    Country;
+			                           public string    HomePhone;
+			                           public string    Extension;
+			                           public Binary    Photo;
+			                           public string    Notes;
+			                           public int?      ReportsTo;
+			                           public string    PhotoPath;
+
+			[Association(ThisKey="EmployeeID", OtherKey="ReportsTo")]  public List<Employee>          Employees;
+			[Association(ThisKey="EmployeeID", OtherKey="EmployeeID")] public List<EmployeeTerritory> EmployeeTerritories;
+			[Association(ThisKey="EmployeeID", OtherKey="EmployeeID")] public List<Order>             Orders;
+			[Association(ThisKey="ReportsTo",  OtherKey="EmployeeID")] public Employee                ReportsToEmployee;
+
+			//[MapIgnore]
+			protected override int Key
+			{
+				get { return EmployeeID; }
+			}
+		}
+
+		[TableName("EmployeeTerritories")]
+		public class EmployeeTerritory
+		{
+			[PrimaryKey]          public int    EmployeeID;
+			[PrimaryKey, NotNull] public string TerritoryID;
+
+			[Association(ThisKey="EmployeeID",  OtherKey="EmployeeID")]  public Employee  Employee;
+			[Association(ThisKey="TerritoryID", OtherKey="TerritoryID")] public Territory Territory;
+		}
+
+		[TableName("Order Details")]
+		public class OrderDetail
+		{
+			[PrimaryKey] public int     OrderID;
+			[PrimaryKey] public int     ProductID;
+			             public decimal UnitPrice;
+			             public short   Quantity;
+			             public float   Discount;
+
+			[Association(ThisKey="OrderID",   OtherKey="OrderID")]   public Order   Order;
+			[Association(ThisKey="ProductID", OtherKey="ProductID")] public Product Product;
+		}
+
+		[TableName("Orders")]
+		public class Order : EntityBase<int>
+		{
+			[PrimaryKey, NonUpdatable] public int       OrderID;
+			                           public string    CustomerID;
+			                           public int?      EmployeeID;
+			                           public DateTime? OrderDate;
+			                           public DateTime? RequiredDate;
+			                           public DateTime? ShippedDate;
+			                           public int?      ShipVia;
+			                           public decimal   Freight;
+			                           public string    ShipName;
+			                           public string    ShipAddress;
+			                           public string    ShipCity;
+			                           public string    ShipRegion;
+			                           public string    ShipPostalCode;
+			                           public string    ShipCountry;
+
+			[Association(ThisKey="OrderID",    OtherKey="OrderID")]                     public List<OrderDetail> OrderDetails;
+			[Association(ThisKey="CustomerID", OtherKey="CustomerID", CanBeNull=false)] public Customer          Customer;
+			[Association(ThisKey="EmployeeID", OtherKey="EmployeeID")]                  public Employee          Employee;
+			[Association(ThisKey="ShipVia",    OtherKey="ShipperID")]                   public Shipper           Shipper;
+
+			protected override int Key
+			{
+				get { return OrderID; }
+			}
+		}
+
+		[TableName("Products")]
+		[InheritanceMapping(Code=true,  Type=typeof(DiscontinuedProduct))]
+		[InheritanceMapping(Code=false, Type=typeof(ActiveProduct))]
+		public abstract class Product
+		{
+			[PrimaryKey, NonUpdatable]                  public int      ProductID;
+			[NotNull]                                   public string   ProductName;
+			                                            public int?     SupplierID;
+			                                            public int?     CategoryID;
+			                                            public string   QuantityPerUnit;
+			                                            public decimal? UnitPrice;
+			                                            public short?   UnitsInStock;
+			                                            public short?   UnitsOnOrder;
+			                                            public short?   ReorderLevel;
+			[MapField(IsInheritanceDiscriminator=true)] public bool     Discontinued;
+
+			[Association(ThisKey="ProductID",  OtherKey="ProductID")]  public List<OrderDetail> OrderDetails;
+			[Association(ThisKey="CategoryID", OtherKey="CategoryID")] public Category          Category;
+			[Association(ThisKey="SupplierID", OtherKey="SupplierID")] public Supplier          Supplier;
+		}
+
+		public class ActiveProduct       : Product {}
+		public class DiscontinuedProduct : Product {}
+
+		[TableName("Region")]
+		public class Region
+		{
+			[PrimaryKey] public int    RegionID;
+			[NotNull]    public string RegionDescription;
+
+			[Association(ThisKey="RegionID", OtherKey="RegionID")]
+			public List<Territory> Territories;
+		}
+
+		[TableName("Shippers")]
+		public class Shipper
+		{
+			[PrimaryKey, NonUpdatable] public int    ShipperID;
+			[NotNull]                  public string CompanyName;
+			                           public string Phone;
+
+			[Association(ThisKey="ShipperID", OtherKey="ShipVia")]
+			public List<Order> Orders;
+		}
+
+		[TableName("Suppliers")]
+		public class Supplier
+		{
+			[PrimaryKey, NonUpdatable] public int    SupplierID;
+			[NotNull]                  public string CompanyName;
+			                           public string ContactName;
+			                           public string ContactTitle;
+			                           public string Address;
+			                           public string City;
+			                           public string Region;
+			                           public string PostalCode;
+			                           public string Country;
+			                           public string Phone;
+			                           public string Fax;
+			                           public string HomePage;
+
+			[Association(ThisKey="SupplierID", OtherKey="SupplierID")]
+			public List<Product> Products;
+		}
+
+		[TableName("Territories")]
+		public class Territory
+		{
+			[PrimaryKey, NotNull] public string TerritoryID;
+			[NotNull]             public string TerritoryDescription;
+			                      public int    RegionID;
+
+			[Association(ThisKey="TerritoryID", OtherKey="TerritoryID")]
+			public List<EmployeeTerritory> EmployeeTerritories;
+
+			[Association(ThisKey="RegionID", OtherKey="RegionID")]
+			public Region Region;
+		}
+	}
+}