您的位置:首页 > 其它

NetTiers学习笔记01---调用Data层操作数据

2012-10-23 10:20 423 查看
例子中4个对象的关系图如下 详细的生成方式可以查看官方的文档,本文选用了service



共包含7部分

1.通过住外键,唯一键查询

2.数据的添加

3.更新

4.保存(自动判断对象是否是新的)

5.DeepSave DeepLoad(主从表载入?)

6.事务

7.查询

1 using System;

2 using System.Collections.Generic;

3 using System.Text;

4 using MessageBoard.Entities; //命名空间 (实体)

5 using MessageBoard.Data; //命名空间 (数据访问层)

6

7

8 namespace MessageBoard.Services

9 {

10

11 public class Step01GetByKey

12 {

13

14 public static Users GetByPk(int userId)

15 {

16 return DataRepository.UsersProvider.GetByID(userId); //如果表建立了主键 则自然会有此方法

17 }

18

19 public static TList<Opinions> GetByFK(int userId)

20 {

21 return DataRepository.OpinionsProvider.GetByUserID(userId); //如果2个表建立了外键,自然会有外键查询的方法 返回的是TList

22 }

23

24 public static Users GetByIX(string userName)

25 {

26 return DataRepository.UsersProvider.GetByName(userName); //如果表地某个字段建立了唯一键,也可以通过唯一键查询

27 }

28

29 }

30

31 public class Step02Add

32 {

33

34 public static void Add(Users user)

35 {

36 DataRepository.UsersProvider.Insert(user); //添加一条

37 }

38

39 public static void Add(TList<Users> user)

40 {

41 DataRepository.UsersProvider.Insert(user); //添加多条

42 }

43

44 }

45

46 public class Step03Update

47 {

48

49 public static void Update(Users user)

50 {

51 DataRepository.UsersProvider.Update(user); //更新一条

52 }

53

54 public static void Update(TList<Users> user)

55 {

56 DataRepository.UsersProvider.Update(user); //更新多条

57 }

58

59 }

60 public class Step04Save

61 {

62

63 public static void Save()

64 {

65 Users u = new Users();

66 u.Name = "AAA";

67 DataRepository.UsersProvider.Save(u); // 自动调用add

68

69 u.Name = "BBB";

70 DataRepository.UsersProvider.Save(u); //调用update 通过isduty属性来判断是否是脏 isnew判断是否新

71

72 }

73

74 /// <summary>

75 /// 查找跟当前对象有关联的子对象或父对象

76 /// </summary>

77 public class Step05Deep

78 {

79

80 public static void DeepLoad(string name)

81 {

82 TList<Users> user = DataRepository.UsersProvider.GetAll(); //查找全部

83 DataRepository.UsersProvider.DeepLoad(user, false, DeepLoadType.IncludeChildren, typeof(TList<Email>), typeof(TList<Opinions>), typeof(TList<Address>));

84

85 //有11个重载 举一个最常用的, 第一个参数需要深度载入的对象,第二个是否递归,第三个参数选择载入类型(包含指定对象,忽略,不包含指定)这里是指定了需要载入的对象,后面是params type类型的参数,用于设置需要载入的类型 1对多用Tlist<类型> 多对1直接用类型

86 }

87

88 public static void DeepSave(Users user, params Type[] childTypes) //保存对象及其子对象与deepload对应

89 {

90 DataRepository.UsersProvider.DeepSave(user, DeepSaveType.IncludeChildren, childTypes);

91 }

92

93 }

94

95 /// <summary>

96 /// 事务

97 /// </summary>

98 public class Step06Trans

99 {

100

101 public static void SendAnOpinion(Opinions opinion, string userName)

102 {

103 TransactionManager tm = DataRepository.Provider.CreateTransaction();

104

105 tm.BeginTransaction();

106

107 try

108 {

109 Users user = DataRepository.UsersProvider.GetByName(userName);

110 if (user == null)

111 {

112 user = new Users();

113 user.Name = userName;

114

115 DataRepository.UsersProvider.Save(tm, user);

116 }

117 opinion.UserID = user.ID;

118

119 DataRepository.OpinionsProvider.Save(tm, opinion);

120

121 tm.Commit(); //提交事务

122 }

123 catch

124 {

125 tm.Rollback(); //回滚事务

126 throw;

127 }

128 }

129

130 }

131

132 public class Step07Find

133 {

134

135 public TList<Opinions> FindByDate(DateTime startDate, DateTime endDate, int userId)

136 {

137 SqlFilterBuilder<Opinions> sFB = new SqlFilterBuilder<Opinions>();

138

139 sFB.AppendEquals(OpinionsColumn.UserID, userId);

140

141 sFB.AppendRange(OpinionsColumn.OpinionDate, startDate.ToString(), endDate.ToString());

142

143 return DataRepository.OpinionsProvider.Find(sFB.ToString());

144 }

145 }

146

147 }

148 }

149

源代码等后面教程写完一起放出

即将推出

实体属性的扩展

NetTiers的实体数据源的使用

原地址链接:/article/6988167.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: