comparison HowTo/DataAccess/PersonAccessor.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 NUnit.Framework;
5
6 using BLToolkit.Data;
7 using BLToolkit.DataAccess;
8 using BLToolkit.Mapping;
9 using BLToolkit.Reflection;
10
11 namespace HowTo.DataAccess
12 {
13 [TestFixture]
14 public class PersonAccessorTest
15 {
16 public enum Gender
17 {
18 [MapValue("F")] Female,
19 [MapValue("M")] Male,
20 [MapValue("U")] Unknown,
21 [MapValue("O")] Other
22 }
23
24 public abstract class Person
25 {
26 [MapField("PersonID"), PrimaryKey, NonUpdatable]
27 public abstract int ID { get; }
28
29 public abstract string LastName { get; set; }
30 public abstract string FirstName { get; set; }
31 public abstract string MiddleName { get; set; }
32 public abstract Gender Gender { get; set; }
33
34 public static Person CreateInstance()
35 {
36 return TypeAccessor<Person>.CreateInstanceEx();
37 }
38 }
39
40 public abstract class PersonAccessor : DataAccessor<Person>
41 {
42 [SprocName("Person_SelectByKey")]
43 public abstract Person SelectByID (int id);
44
45 public abstract Person SelectByName(Person person);
46 public abstract Person SelectByName(string firstName, string lastName);
47
48 public abstract int Insert (Person person);
49
50 [ActionName("SelectByKey")]
51 public abstract Person SelectByID (DbManager db, int id);
52
53 public abstract Person SelectByName(DbManager db, Person person);
54 public abstract Person SelectByName(DbManager db, string firstName, string lastName);
55
56 public abstract int Insert (DbManager db, Person person);
57
58 public readonly SprocQuery<Person> Query = new SprocQuery<Person>();
59 }
60
61 [Test]
62 public void Test()
63 {
64 PersonAccessor pa = DataAccessor.CreateInstance<PersonAccessor>();
65
66 // Insert and get id.
67 //
68 Person person = Person.CreateInstance();
69
70 person.FirstName = "Crazy";
71 person.LastName = "Frog";
72 person.Gender = Gender.Unknown;
73
74 int id = pa.Insert(person);
75
76 person = pa.SelectByID(id);
77
78 TypeAccessor.WriteConsole(person);
79 Assert.IsNotNull(person);
80
81 // Update.
82 //
83 person.Gender = Gender.Other;
84
85 pa.Query.Update(person);
86
87 person = pa.SelectByID(person.ID);
88
89 TypeAccessor.WriteConsole(person);
90 Assert.AreEqual(Gender.Other, person.Gender);
91
92 // Delete.
93 //
94 pa.Query.Delete(person);
95
96 person = pa.SelectByID(person.ID);
97
98 Assert.IsNull(person);
99
100 // Get All.
101 //
102 List<Person> list = pa.Query.SelectAll();
103
104 foreach (Person p in list)
105 TypeAccessor.WriteConsole(p);
106 }
107
108 [Test]
109 public void TransactionTest()
110 {
111 using (DbManager db = new DbManager())
112 {
113 PersonAccessor pa = DataAccessor.CreateInstance<PersonAccessor>();
114
115 db.BeginTransaction();
116
117 // Insert and get id.
118 //
119 Person person = Person.CreateInstance();
120
121 person.FirstName = "Crazy";
122 person.LastName = "Frog";
123 person.Gender = Gender.Unknown;
124
125 int id = pa.Insert(db, person);
126
127 person = pa.SelectByID(db, id);
128
129 TypeAccessor.WriteConsole(person);
130 Assert.IsNotNull(person);
131
132 // Update.
133 //
134 person.Gender = Gender.Other;
135
136 pa.Query.Update(db, person);
137
138 person = pa.SelectByID(db, person.ID);
139
140 TypeAccessor.WriteConsole(person);
141 Assert.AreEqual(Gender.Other, person.Gender);
142
143 // Delete.
144 //
145 pa.Query.Delete(db, person);
146
147 person = pa.SelectByID(db, person.ID);
148
149 Assert.IsNull(person);
150
151 db.CommitTransaction();
152
153 // Get All.
154 //
155 List<Person> list = pa.Query.SelectAll(db);
156
157 foreach (Person p in list)
158 TypeAccessor.WriteConsole(p);
159 }
160 }
161 }
162 }
163