comparison Demo/Asp.Net/BusinessLogic/DataAccess/ProductAccessor.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
4 using BLToolkit.Aspects;
5 using BLToolkit.Data;
6 using BLToolkit.DataAccess;
7
8 namespace PetShop.BusinessLogic.DataAccess
9 {
10 using ObjectModel;
11
12 public abstract class ProductAccessor : AccessorBase<ProductAccessor.DB, ProductAccessor>
13 {
14 public class DB : DbManager { public DB() : base("ProductDB") {} }
15
16 #region Item
17
18 const string _itemQuery = @"
19 SELECT
20 i.*,
21 n.Qty,
22 p.Name as ProductName,
23 p.CategoryId
24 FROM
25 Item i
26 JOIN Product p ON p.ProductId = i.ProductId
27 JOIN Inventory n ON n.ItemId = i.ItemId";
28
29 [SqlQuery(_itemQuery + @" WHERE i.ProductId = @id")]
30 public abstract IList<Item> GetItemListByProductID(string @id);
31
32 [SqlQuery(_itemQuery + @" WHERE i.ItemId = @itemID")]
33 public abstract Item GetItem(string @itemID);
34
35 [SqlQuery(_itemQuery + @" ORDER BY i.Name")]
36 public abstract List<Item> GetAllItemList();
37
38 #endregion
39
40 #region Product
41
42 [Cache(MaxMinutes = 60)]
43 [SqlQuery(@"SELECT * FROM Product WHERE CategoryId = @id")]
44 public abstract IList<Product> GetProductListByCategoryID(string @id);
45
46 #endregion
47
48 #region Categoty
49
50 // This method needs to be cached, so we can't call Query.SelectByKey directly from the manager class.
51 //
52 [Cache(MaxMinutes=60)]
53 public virtual Category GetCategory(string id)
54 {
55 return Query.SelectByKey<Category>(id);
56 }
57
58 #endregion
59
60 #region Inventory
61
62 [SqlQuery(@"SELECT Qty FROM Inventory WHERE ItemId = @itemId")]
63 public abstract int CurrentQtyInStock(string @itemId);
64
65 #endregion
66 }
67 }