annotate HowTo/DataAccess/ExecuteDictionary.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using BLToolkit.Common;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.DataAccess;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using BLToolkit.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 namespace HowTo.DataAccess
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 public class ExecuteDictionary1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 public class Person
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 [MapField("PersonID"), /*[a]*/PrimaryKey/*[/a]*/]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 public int /*[a]*/ID/*[/a]*/;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 public string LastName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 public string FirstName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 public string MiddleName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 public abstract class /*[a]*/PersonAccessor/*[/a]*/ : /*[a]*/DataAccessor/*[/a]*/<Person>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 // This method uses Person class primary key information.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 [ActionName("SelectAll")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 public abstract /*[a]*/Dictionary<int,Person>/*[/a]*/ GetPersonDictionary1();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 // Define index field explicitly. "ID" is a field name of the Person class.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 [ActionName("SelectAll")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 [/*[a]*/Index("ID")/*[/a]*/]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 public abstract /*[a]*/Dictionary<int,Person>/*[/a]*/ GetPersonDictionary2();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 // Define index field explicitly. "@PersonID" is a recordset field.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 // Note that the '@' symbol enforces the library to read index value
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 // from recordset (not from object).
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 [ActionName("SelectAll")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 [/*[a]*/Index("@PersonID")/*[/a]*/]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 public abstract /*[a]*/Dictionary<int,Person>/*[/a]*/ GetPersonDictionary3();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 // This method reads a dictionary containing scalar values.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 [SqlQuery("SELECT PersonID, FirstName FROM Person")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 [/*[a]*/Index("PersonID")/*[/a]*/]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 [/*[a]*/ScalarFieldName("FirstName")/*[/a]*/]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 public abstract /*[a]*/Dictionary<int,string>/*[/a]*/ GetPersonNameDictionary();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 public void Test()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 PersonAccessor pa = DataAccessor.CreateInstance<PersonAccessor>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 // ExecuteDictionary.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 Dictionary<int,Person> dic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 dic = pa.GetPersonDictionary1();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 dic = pa.GetPersonDictionary2();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 dic = pa.GetPersonDictionary3();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 foreach (int id in dic.Keys)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 Console.WriteLine("{0}: {1} {2}", id, dic[id].FirstName, dic[id].LastName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 // ExecuteScalarDictionary.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 Dictionary<int,string> sdic = pa.GetPersonNameDictionary();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 foreach (int id in dic.Keys)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 Console.WriteLine("{0}: {1}", id, sdic[id]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 public class ExecuteDictionary2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 // This example demonstrates how to use a multiple field key.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 public class Person
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 [/*[a]*/PrimaryKey(1)/*[/a]*/, MapField("PersonID")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 public int ID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 [/*[a]*/PrimaryKey(2)/*[/a]*/]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 public string LastName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 public string FirstName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 public string MiddleName;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 public abstract class /*[a]*/PersonAccessor/*[/a]*/ : /*[a]*/DataAccessor/*[/a]*/<Person>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 // This method uses Person class primary key information.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 // Note that the key type of the dictionary must be of /*[a]*/IndexValue/*[/a]*/ type.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 // It is required if the index consists of more than one element.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 [ActionName("SelectAll")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 public abstract /*[a]*/Dictionary<CompoundValue,Person>/*[/a]*/ GetPersonDictionary();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 // This method reads a dictionary containing scalar values.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 [SqlQuery("SELECT PersonID, LastName, FirstName FROM Person")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 [/*[a]*/Index("PersonID", "LastName")/*[/a]*/]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 [/*[a]*/ScalarFieldName("FirstName")/*[/a]*/]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 public abstract /*[a]*/Dictionary<CompoundValue,string>/*[/a]*/ GetPersonNameDictionary();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 public void Test()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 PersonAccessor pa = DataAccessor.CreateInstance<PersonAccessor>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 // ExecuteDictionary.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 Dictionary<CompoundValue,Person> dic = pa.GetPersonDictionary();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 foreach (CompoundValue idx in dic.Keys)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 Console.WriteLine("{0}: {1} {2}", dic[idx].ID, dic[idx].FirstName, dic[idx].LastName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 // ExecuteScalarDictionary.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 Dictionary<CompoundValue,string> sdic = pa.GetPersonNameDictionary();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 string firstName = sdic[new CompoundValue(2, "Testerson")];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 Assert.AreEqual("Tester", firstName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 }