annotate HowTo/Data/SetCommand.cs @ 3:1ef98bd70424

!bug 100 +3h Исправление проблемы BLToolkit + mono 3.4
author cin
date Fri, 22 Aug 2014 17:34:46 +0400
parents f990fcb411a9
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.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 namespace HowTo.Data
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 using DataAccess;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 public class SetCommand
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 // Select a person list.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 public IList<Person> GetPersonList()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 using (DbManager db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 return db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 ./*[a]*/SetCommand/*[/a]*/("SELECT * FROM Person")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 .ExecuteList<Person>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 public void Test1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 IList<Person> list = GetPersonList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 Assert.AreNotEqual(0, list.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 // Select a person.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 public Person GetPersonByID(int id)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 using (DbManager db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 return db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 ./*[a]*/SetCommand/*[/a]*/("SELECT * FROM Person WHERE PersonID = @id",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 db./*[a]*/Parameter/*[/a]*/("@id", id))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 .ExecuteObject<Person>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 public void Test2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 Person person = GetPersonByID(1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 Assert.IsNotNull(person);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 // Insert, Update, and Delete a person.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 public Person GetPersonByID(DbManager db, int id)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 return db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 ./*[a]*/SetCommand/*[/a]*/("SELECT * FROM Person WHERE PersonID = @id",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 db./*[a]*/Parameter/*[/a]*/("@id", id))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 .ExecuteObject<Person>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 public Person CreatePerson(DbManager db)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 int id = db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 ./*[a]*/SetCommand/*[/a]*/(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 INSERT INTO Person ( LastName, FirstName, Gender)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 VALUES (@LastName, @FirstName, @Gender)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 SELECT Cast(SCOPE_IDENTITY() as int) PersonID",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 db./*[a]*/Parameter/*[/a]*/("@LastName", "Frog"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 db./*[a]*/Parameter/*[/a]*/("@FirstName", "Crazy"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 db./*[a]*/Parameter/*[/a]*/("@Gender", Map.EnumToValue(Gender.Male)))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 .ExecuteScalar<int>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 return GetPersonByID(db, id);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 public Person UpdatePerson(DbManager db, Person person)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 ./*[a]*/SetCommand/*[/a]*/(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 UPDATE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 Person
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 SET
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 LastName = @LastName,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 FirstName = @FirstName,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 Gender = @Gender
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 WHERE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 PersonID = @PersonID",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 db./*[a]*/CreateParameters/*[/a]*/(person))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 .ExecuteNonQuery();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 return GetPersonByID(db, person.ID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 public Person DeletePerson(DbManager db, Person person)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 ./*[a]*/SetCommand/*[/a]*/("DELETE FROM Person WHERE PersonID = @id",
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 db./*[a]*/Parameter/*[/a]*/("@id", person.ID))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 .ExecuteNonQuery();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 return GetPersonByID(db, person.ID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 public void Test3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 using (DbManager db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 db.BeginTransaction();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 // Insert.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 Person person = CreatePerson(db);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 Assert.IsNotNull(person);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 // Update.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 Assert.AreEqual(Gender.Male, person.Gender);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 person.Gender = Gender.Female;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 person = UpdatePerson(db, person);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 Assert.AreEqual(Gender.Female, person.Gender);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 // Delete.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 person = DeletePerson(db, person);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 Assert.IsNull(person);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 db.CommitTransaction();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 }