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

例子中4个对象的关系图如下 详细的生成方式可以查看官方的文档,本文选用了service
NetTiers学习笔记01---调用Data层操作数据

共包含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的实体数据源的使用

你可能感兴趣的:(学习笔记)