记EF的一个基本访问类

代码:

  1 using EFModel;
  2 using System;
  3 using System.Collections.Generic;
  4 using System.Data.Entity;
  5 using System.Data.Entity.ModelConfiguration.Conventions;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Threading.Tasks;
  9 
 10 namespace EFDal
 11 {
 12 
 13 /// <summary> 
 14 /// 
 15 /// </summary>
 16 public class DataContext : DbContext
 17 {
 18 /// <summary>
 19 /// 
 20 /// </summary>
 21 public Boolean IsDisposed = false;
 22 
 23 
 24 public static bool ModelFlag = true;
 25 
 26 /// <summary>
 27 /// 
 28 /// </summary>
 29 static DataContext()
 30 {
 31 if (ModelFlag)
 32 {
 33 Database.SetInitializer<DataContext>(null); //不创建
 34 }
 35 else
 36 {
 37 Database.SetInitializer<DataContext>(new DefaultExistsDb());
 38 }
 39 
 40 }
 41 
 42 
 43 /// <summary>
 44 /// 
 45 /// </summary>
 46 public DataContext()
 47 : base()
 48 {
 49 
 50 
 51 }
 52 
 53 /// <summary>
 54 /// db connection string
 55 /// </summary>
 56 public string DBConnectionString
 57 {
 58 get;
 59 set;
 60 }
 61 
 62 /// <summary>
 63 /// 
 64 /// </summary>
 65 /// <param name="connectionString"></param>
 66 public DataContext(string connectionString)
 67 : base(connectionString)
 68 {
 69 DBConnectionString = connectionString;
 70 }
 71 
 72 /// <summary>
 73 /// get this db connection string
 74 /// </summary>
 75 /// <returns></returns>
 76 public string GetConnectionString()
 77 {
 78 if (!string.IsNullOrEmpty(DBConnectionString))
 79 {
 80 return DBConnectionString;
 81 }
 82 else
 83 {
 84 return this.Database.Connection.ConnectionString;
 85 }
 86 }
 87 
 88 /// <summary>
 89 /// check the database real exist or not (check sql server have this db or not)
 90 /// </summary>
 91 /// <returns></returns>
 92 public Boolean IsExists()
 93 {
 94 return this.Database.Exists();
 95 }
 96 
 97 /// <summary>
 98 /// dispose
 99 /// </summary>
100 /// <param name="disposing"></param>
101 protected override void Dispose(bool disposing)
102 {
103 IsDisposed = true;
104 base.Dispose(disposing);
105 }
106 
107  
108 
109  
110 /// <summary>
111 /// 
112 /// </summary>
113 /// <param name="modelBuilder"></param> 
114 protected override void OnModelCreating(DbModelBuilder modelBuilder)
115 {
116 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //去掉表名复数
117 modelBuilder.Entity<Employee>().Property(p => p.EmployeeID).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None);
118 }
119 
120 }
121 
122 /// <summary>
123 /// 默认数据库,当model变更时,重建创建
124 /// </summary>
125 public class Change_RecreateDb : System.Data.Entity.DropCreateDatabaseIfModelChanges<DataContext>
126 {
127 
128 }
129 /// <summary>
130 /// 重新创建
131 /// </summary>
132 public class RecreateDb : System.Data.Entity.DropCreateDatabaseAlways<DataContext>
133 {
134 
135 }
136 /// <summary>
137 /// 当数据库不存在时创建
138 /// </summary>
139 public class DefaultExistsDb : System.Data.Entity.CreateDatabaseIfNotExists<DataContext>
140 {
141 
142 }
143 
144 
145 }
View Code

 

另外实体类在主键字段中,应该标识[Key]。不然在数据主键标识定义为非PK_xxx时,会提示主键错误

 

实体类定义示例:

  1 /// <summary>
  2     /// Employee
  3     /// </summary>
  4     public class Employee
  5     {
  6         private int _EmployeeID;
  7         private int _ClientID;
  8         private string _EmployeeCode;
  9         private string _EmployeeName;
 10         private string _EmployeePass;
 11         private int _EmployeeStatus;
 12         private int _RoleID; 
 13         private decimal _Timezone;
 14         private string _TimezoneCode;
 15         private int _Language;
 16         private int _MainStatus;
 17         private string _Mobile;
 18         /// <summary>
 19         /// 
 20         /// </summary>
 21         public int EmployeeID
 22         {
 23             get
 24             {
 25                 return _EmployeeID;
 26             }
 27             set
 28             {
 29                 _EmployeeID = value;
 30             }
 31         }
 32         /// <summary>
 33         /// 
 34         /// </summary>
 35         public int ClientID
 36         {
 37             get
 38             {
 39                 return _ClientID;
 40             }
 41             set
 42             {
 43                 _ClientID = value;
 44             }
 45         }
 46         /// <summary>
 47         /// 
 48         /// </summary>
 49         public string EmployeeCode
 50         {
 51             get
 52             {
 53                 return _EmployeeCode;
 54             }
 55             set
 56             {
 57                 if (value == null)
 58                 {
 59                     _EmployeeCode = string.Empty;
 60                 }
 61                 else
 62                 {
 63                     _EmployeeCode = value;
 64                 }
 65             }
 66         }
 67         /// <summary>
 68         /// 
 69         /// </summary>
 70         public string EmployeeName
 71         {
 72             get
 73             {
 74                 return _EmployeeName;
 75             }
 76             set
 77             {
 78                 if (value == null)
 79                 {
 80                     _EmployeeName = string.Empty;
 81                 }
 82                 else
 83                 {
 84                     _EmployeeName = value;
 85                 }
 86             }
 87         }
 88         /// <summary>
 89         /// 
 90         /// </summary>
 91         public string EmployeePass
 92         {
 93             get
 94             {
 95                 return _EmployeePass;
 96             }
 97             set
 98             {
 99                 if (value == null)
100                 {
101                     _EmployeePass = string.Empty;
102                 }
103                 else
104                 {
105                     _EmployeePass = value;
106                 }
107             }
108         }
109         /// <summary>
110         /// 
111         /// </summary>
112         public int EmployeeStatus
113         {
114             get
115             {
116                 return _EmployeeStatus;
117             }
118             set
119             {
120                 _EmployeeStatus = value;
121             }
122         }
123         /// <summary>
124         /// 
125         /// </summary>
126         public int RoleID
127         {
128             get
129             {
130                 return _RoleID;
131             }
132             set
133             {
134                 _RoleID = value;
135             }
136         }
137       
138         /// <summary>
139         /// 
140         /// </summary>
141         public decimal Timezone
142         {
143             get
144             {
145                 return _Timezone;
146             }
147             set
148             {
149                 _Timezone = value;
150             }
151         }
152         /// <summary>
153         /// 
154         /// </summary>
155         public string TimezoneCode
156         {
157             get
158             {
159                 return _TimezoneCode;
160             }
161             set
162             {
163                 if (value == null)
164                 {
165                     _TimezoneCode = string.Empty;
166                 }
167                 else
168                 {
169                     _TimezoneCode = value;
170                 }
171             }
172         }
173         /// <summary>
174         /// 
175         /// </summary>
176         public int Language
177         {
178             get
179             {
180                 return _Language;
181             }
182             set
183             {
184                 _Language = value;
185             }
186         }
187         /// <summary>
188         /// 
189         /// </summary>
190         public int MainStatus
191         {
192             get
193             {
194                 return _MainStatus;
195             }
196             set
197             {
198                 _MainStatus = value;
199             }
200         }
201         /// <summary>
202         /// 
203         /// </summary>
204         public string Mobile
205         {
206             get
207             {
208                 return _Mobile;
209             }
210             set
211             {
212                 if (value == null)
213                 {
214                     _Mobile = string.Empty;
215                 }
216                 else
217                 {
218                     _Mobile = value;
219                 }
220             }
221         }
222 
223     }
View Code

 

仓储接口:

  1 public interface IRepository<T> : IDisposable where T : class
  2         {
  3 
  4             /// <summary>
  5             /// 添加实体
  6             /// </summary>
  7             /// <typeparam name="T"></typeparam>
  8             /// <param name="Entity"></param>
  9             /// <returns></returns>
 10             bool Add(T Entity) ;
 11 
 12             /// <summary>
 13             /// 批量的进行添加实体
 14             /// </summary>
 15             /// <typeparam name="T"></typeparam>
 16             /// <param name="Entity"></param>
 17             /// <returns></returns>
 18             bool AddRange(List<T> Entity);
 19 
 20 
 21             /// <summary>
 22             /// 删除单个实体
 23             /// </summary>
 24             /// <typeparam name="T"></typeparam>
 25             /// <param name="Entity"></param>
 26             /// <returns></returns>
 27             bool Delete(T Entity);
 28 
 29             /// <summary>
 30             /// 根据查询条件进行删除单个实体
 31             /// </summary>
 32             /// <typeparam name="T"></typeparam>
 33             /// <param name="whereLambda"></param>
 34             /// <returns></returns>
 35             bool Delete(Expression<Func<T, bool>> whereLambda); 
 36 
 37 
 38             /// <summary>
 39             ///单个对象的修改
 40             /// </summary>
 41             /// <typeparam name="T"></typeparam>
 42             /// <param name="Entity">需要修改的对象</param>
 43             /// <returns></returns>
 44             bool Update(T Entity);
 45 
 46 
 47             /// <summary>
 48             /// 批量修改
 49             /// </summary>
 50             /// <typeparam name="T"></typeparam>
 51             /// <param name="whereLambda"></param>
 52             /// <param name="updateLambda"></param>
 53             /// <returns></returns>
 54             bool Update(Expression<Func<T, bool>> WhereLambda, Expression<Func<T, T>> UpdateLambda) ;
 55 
 56 
 57             /// <summary>
 58             /// 批量的修改
 59             /// </summary>
 60             /// <typeparam name="T"></typeparam>
 61             /// <param name="Entity"></param>
 62             /// <returns></returns>
 63             bool Update(List<T> Entity) ;
 64 
 65 
 66             /// <summary>
 67             /// 批量统一的进行更新
 68             /// </summary>
 69             /// <typeparam name="T"></typeparam>
 70             /// <param name="model">需要修改的对象实体</param>
 71             /// <param name="WhereLambda">查询的条件</param>
 72             /// <param name="ModifiedProNames"></param>
 73             /// <returns></returns>
 74             bool Update(T model, Expression<Func<T, bool>> WhereLambda, params string[] ModifiedProNames) ;
 75 
 76 
 77             /// <summary>
 78             /// 根据主键进行查询
 79             /// </summary>
 80             /// <typeparam name="T"></typeparam>
 81             /// <param name="ID"></param>
 82             /// <returns></returns>
 83             T FindByID(dynamic ID) ;
 84 
 85             /// <summary>
 86             /// 默认查询选择第一条数据,没有那么进行返回NULL
 87             /// </summary>
 88             /// <typeparam name="T"></typeparam>
 89             /// <param name="WhereLambda"></param>
 90             /// <returns>返回bool</returns>
 91             T GetFristDefault(Expression<Func<T, bool>> WhereLambda = null) ;
 92 
 93             /// <summary>
 94             /// 查询所有的数据
 95             /// </summary>
 96             /// <typeparam name="T"></typeparam>
 97             /// <returns></returns>
 98             List<T> GetAll(string Order = null) ;
 99 
100             /// <summary>
101             /// 含有带条件的查询
102             /// </summary>
103             /// <typeparam name="T"></typeparam>
104             /// <param name="WhereLambda"></param>
105             /// <returns></returns>
106             List<T> GetAllQuery(Expression<Func<T, bool>> WhereLambda = null) ;
107 
108 
109             /// <summary>
110             ///获取查询的数量
111             /// </summary>
112             /// <typeparam name="T"></typeparam>
113             /// <param name="WhereLambda"></param>
114             /// <returns></returns>
115             int GetCount(Expression<Func<T, bool>> WhereLambda = null);
116 
117             /// <summary>
118             /// 判断对象是否存在
119             /// </summary>
120             /// <typeparam name="T"></typeparam>
121             /// <param name="WhereLambda"></param>
122             /// <returns></returns>
123             bool GetAny(Expression<Func<T, bool>> WhereLambda = null);
124 
125 
126             /// <summary>
127             /// 根据查询过条件进行分页
128             /// </summary>
129             /// <typeparam name="T"></typeparam>
130             /// <typeparam name="TKey"></typeparam>
131             /// <param name="PageIndex">当前页面</param>
132             /// <param name="PageSize">页面的大小</param>
133             /// <param name="TotalCount">总记录数</param>
134             /// <param name="OrderBy">排序的条件</param>
135             /// <param name="WhereLambda">查询条件</param>
136             /// <param name="IsOrder">是否正序</param>
137             /// <returns></returns>
138             List<T> Pagination<TKey>(int PageIndex, int PageSize, out int TotalCount, Expression<Func<T, TKey>> OrderBy, Expression<Func<T, bool>> WhereLambda = null, bool IsOrder = true) ;
139 
140 
141             /// <summary>
142             /// 根据查询条件进行做分页查询
143             /// </summary>
144             /// <typeparam name="T">查询的对象</typeparam>
145             /// <param name="PageIndex">当前的页码</param>
146             /// <param name="PageSize">每页的大小</param>
147             /// <param name="TotalCount">总页数</param>
148             /// <param name="ordering">排序条件</param>
149             /// <param name="WhereLambda">查询条件</param>
150             /// <returns></returns>
151             List<T> Pagination(int PageIndex, int PageSize, out int TotalCount, string ordering, Expression<Func<T, bool>> WhereLambda = null) ;
152 
153 
154             /// <summary>
155             /// 根据查询条件进行转化
156             /// </summary>
157             /// <typeparam name="T"></typeparam>
158             /// <param name="WhereLambda"></param>
159             /// <returns></returns>
160             List<T> GetSelect(Expression<Func<T, bool>> WhereLambda) ;
161 
162 
163             /// <summary>
164             /// 执行存储过程或自定义sql语句--返回集合
165             /// </summary>
166             /// <typeparam name="T"></typeparam>
167             /// <param name="Sql"></param>
168             /// <param name="Parms"></param>
169             /// <param name="CmdType"></param>
170             /// <returns></returns>
171             List<T> QueryProc(string Sql, List<MySqlParameter> Parms, CommandType CmdType = CommandType.Text) ;
172 
173 
174             /// <summary>
175             /// 回滚
176             /// </summary>
177             /// <typeparam name="T"></typeparam>
178             void RollBackChanges() ;
179 
180          
181     }
View Code

 

仓储代码:

  1 /// <summary>
  2     /// 
  3     /// </summary>
  4     public class Repository<T> : IRepository<T>, IDisposable where T : class
  5     {
  6         private string _ConnectionString = "Server=127.0.0.1,1433;database=MarketDB;uid=sa;pwd=123456";
  7         /// <summary>
  8         /// 
  9         /// </summary>
 10         private DbContext _DbContextHandle = new DataContext(@"Server=127.0.0.1,1433;database=MarketDB;uid=sa;pwd=123456");//此处进行调用EF的DBContext的实体类或者通过工厂化模式来进行调用。
 11 
 12         public Repository()
 13         {
 14         }
 15         public Repository(string connectionString)
 16         {
 17             if (string.IsNullOrEmpty(connectionString))
 18             {
 19                 throw new ArgumentNullException("Connection String");
 20             }
 21             else
 22             {
 23                 this._ConnectionString = connectionString;
 24                 _DbContextHandle = new DbContext(connectionString);
 25             }
 26         }
 27         /// <summary>
 28         /// 添加一个对象
 29         /// </summary>
 30         /// <typeparam name="T"></typeparam>
 31         /// <param name="Entity"></param>
 32         /// <returns></returns>
 33         public bool Add(T Entity)
 34         {
 35             using (TransactionScope trans = new TransactionScope(TransactionScopeOption.Required))
 36             {
 37                 T t = _DbContextHandle.Set<T>().Add(Entity);
 38                 int Count = _DbContextHandle.SaveChanges();
 39                 trans.Complete();
 40                 return Count > 0;
 41             }
 42         }
 43 
 44         /// <summary>
 45         /// 批量的插入数据
 46         /// </summary>
 47         /// <typeparam name="T"></typeparam>
 48         /// <param name="Entity"></param>
 49         /// <returns></returns>
 50         public bool AddRange(List<T> Entity)
 51         {
 52             using (TransactionScope trans = new TransactionScope(TransactionScopeOption.Required))
 53             {
 54                 _DbContextHandle.Set<T>().AddRange(Entity);
 55                 int Count = _DbContextHandle.SaveChanges();
 56                 trans.Complete();
 57                 return Count > 0;
 58             }
 59         }
 60 
 61         /// <summary>
 62         /// 根据查询条件进行删除对象
 63         /// </summary>
 64         /// <typeparam name="T"></typeparam>
 65         /// <param name="whereLambda">查询条件</param>
 66         /// <returns></returns>
 67         public bool Delete(Expression<Func<T, bool>> whereLambda)
 68         {
 69             using (TransactionScope trans = new TransactionScope(TransactionScopeOption.Required))
 70             {
 71                 var EntityModel = _DbContextHandle.Set<T>().Where(whereLambda).FirstOrDefault();
 72                 if (EntityModel != null)
 73                 {
 74                     _DbContextHandle.Set<T>().Remove(EntityModel);
 75                     int Count = _DbContextHandle.SaveChanges();
 76                     trans.Complete();
 77                     return Count > 0;
 78                 }
 79                 return false;
 80             }
 81         }
 82 
 83 
 84         /// <summary>
 85         /// 删除单个对象的实体
 86         /// </summary>
 87         /// <typeparam name="T"></typeparam>
 88         /// <param name="Entity">实体对象</param>
 89         /// <returns></returns>
 90         public bool Delete(T Entity)
 91         {
 92             using (TransactionScope trans = new TransactionScope(TransactionScopeOption.Required))
 93             {
 94                 _DbContextHandle.Set<T>().Attach(Entity);
 95                 _DbContextHandle.Set<T>().Remove(Entity);
 96                 int Count = _DbContextHandle.SaveChanges();
 97                 trans.Complete();
 98                 return Count > 0;
 99             }
100         }
101 
102         /// <summary>
103         /// 批量的进行更新数据
104         /// </summary>
105         /// <typeparam name="T"></typeparam>
106         /// <param name="Entity"></param>
107         /// <returns></returns>
108         public bool Update(List<T> Entity)
109         {
110             int Count = 0;
111             using (TransactionScope trans = new TransactionScope(TransactionScopeOption.Required))
112             {
113                 if (Entity != null)
114                 {
115                     foreach (var items in Entity)
116                     {
117                         var EntityModel = _DbContextHandle.Entry(Entity);
118                         _DbContextHandle.Set<T>().Attach(items);
119                         EntityModel.State = EntityState.Modified;
120                     } 
121                 }
122                 Count = _DbContextHandle.SaveChanges();
123                 trans.Complete();
124             }
125 
126             return Count > 0;
127         }
128 
129 
130         /// <summary>
131         /// 进行修改单个实体对象
132         /// </summary>
133         /// <typeparam name="T"></typeparam>
134         /// <param name="Entity">实体对象</param>
135         /// <returns></returns>
136         public bool Update(T Entity)
137         {
138             using (TransactionScope trans = new TransactionScope())
139             {
140                 var EntityModel = _DbContextHandle.Entry<T>(Entity);
141                 _DbContextHandle.Set<T>().Attach(Entity);
142                 EntityModel.State = EntityState.Modified;
143                 int Count = _DbContextHandle.SaveChanges();
144                 trans.Complete();
145                 return Count > 0;
146             }
147         }
148 
149         /// <summary>
150         /// 批量的修改
151         /// </summary>
152         /// <typeparam name="T"></typeparam>
153         /// <param name="WhereLambda"></param>
154         /// <param name="UpdateLambda"></param>
155         /// <returns></returns>
156         public bool Update(Expression<Func<T, bool>> WhereLambda, Expression<Func<T, T>> UpdateLambda)
157         {
158             //_DbContextHandle.Set<T>().Where(WhereLambda).Update<T>(UpdateLambda);
159             //return _DbContextHandle.SaveChanges() > 0;
160             return false;
161         }
162 
163 
164         /// <summary>
165         /// 查询条件进行修改
166         /// </summary>
167         /// <typeparam name="T"></typeparam>
168         /// <param name="model"></param>
169         /// <param name="WhereLambda"></param>
170         /// <param name="ModifiedProNames"></param>
171         /// <returns></returns>
172         public bool Update(T model, Expression<Func<T, bool>> WhereLambda, params string[] ModifiedProNames)
173         {
174             //查询要修改的数据
175             List<T> ListModifing = _DbContextHandle.Set<T>().Where(WhereLambda).ToList();
176             Type t = typeof(T);
177             List<PropertyInfo> ProInfos = t.GetProperties(BindingFlags.Instance | BindingFlags.Public).ToList();
178             Dictionary<string, PropertyInfo> DitProList = new Dictionary<string, PropertyInfo>();
179             ProInfos.ForEach(p =>
180             {
181                 if (ModifiedProNames.Contains(p.Name))
182                 {
183                     DitProList.Add(p.Name, p);
184                 }
185             });
186 
187             if (DitProList.Count <= 0)
188             {
189                 throw new Exception("指定修改的字段名称有误或为空");
190             }
191             foreach (var item in DitProList)
192             {
193                 PropertyInfo proInfo = item.Value;
194                 object newValue = proInfo.GetValue(model, null);
195                 //批量进行修改相互对应的属性
196                 foreach (T oModel in ListModifing)
197                 {
198                     proInfo.SetValue(oModel, newValue, null);//设置其中新的值
199                 }
200             }
201 
202             return _DbContextHandle.SaveChanges() > 0;
203         }
204         /// <summary>
205         /// 释放缓存
206         /// </summary>
207         public void Dispose()
208         {
209             _DbContextHandle.Dispose();
210         }
211 
212         /// <summary>
213         /// 查询单个对象
214         /// </summary>
215         /// <typeparam name="T"></typeparam>
216         /// <param name="ID">主键ID</param>
217         /// <returns></returns>
218         public T FindByID(dynamic ID)
219         {
220             DbSet<T> db = _DbContextHandle.Set<T>();
221             var result =db.Find(ID); 
222             return result;
223             
224             //return _DbContextHandle.Set<T>().Find(ID) ?? null;
225         }
226 
227 
228         /// <summary>
229         /// 获取全部数据的列表
230         /// </summary>
231         /// <typeparam name="T"></typeparam>
232         /// <param name="Order">排序</param>
233         /// <returns></returns>
234         public List<T> GetAll(string orderString = "")
235         {
236             if (string.IsNullOrEmpty(orderString))
237             {
238                 return _DbContextHandle.Set<T>().ToList();
239             }
240             else
241             {
242                 return null; // _DbContextHandle.Set<T>().OrderBy(orderString).ToList();
243             }
244         }
245 
246         /// <summary>
247         ///根据查询条件进行查询列表
248         /// </summary>
249         /// <typeparam name="T"></typeparam>
250         /// <param name="WhereLambda"></param>
251         /// <returns></returns>
252         public List<T> GetAllQuery(Expression<Func<T, bool>> WhereLambda = null)
253         {
254             return WhereLambda != null ? _DbContextHandle.Set<T>().Where(WhereLambda).ToList() ?? null : _DbContextHandle.Set<T>().ToList() ?? null;
255         }
256 
257         /// <summary>
258         ///判断对象是否存在
259         /// </summary>
260         /// <typeparam name="T"></typeparam>
261         /// <param name="WhereLambda"></param>
262         /// <returns></returns>
263         public bool GetAny(Expression<Func<T, bool>> WhereLambda = null)
264         {
265             return WhereLambda != null ? _DbContextHandle.Set<T>().Where(WhereLambda).Any() : _DbContextHandle.Set<T>().Any();
266         }
267 
268         /// <summary>
269         /// 获取查询条件的记录数
270         /// </summary>
271         /// <typeparam name="T"></typeparam>
272         /// <param name="WhereLambda"></param>
273         /// <returns></returns>
274         public int GetCount(Expression<Func<T, bool>> WhereLambda = null)
275         {
276             return WhereLambda != null ? _DbContextHandle.Set<T>().Where(WhereLambda).Count() : _DbContextHandle.Set<T>().Count();
277         }
278 
279 
280         /// <summary>
281         /// 获取单条的记录
282         /// </summary>
283         /// <typeparam name="T"></typeparam>
284         /// <param name="WhereLambda"></param>
285         /// <returns></returns>
286         public T GetFristDefault(Expression<Func<T, bool>> WhereLambda = null)
287         {
288             return WhereLambda != null ? _DbContextHandle.Set<T>().Where(WhereLambda).FirstOrDefault() ?? null : _DbContextHandle.Set<T>().FirstOrDefault() ?? null;
289         }
290 
291 
292         /// <summary>
293         /// 查询对象的转化
294         /// </summary>
295         /// <typeparam name="T"></typeparam>
296         /// <param name="WhereLambda"></param>
297         /// <returns></returns>
298         public List<T> GetSelect(Expression<Func<T, bool>> WhereLambda)
299         {
300             return _DbContextHandle.Set<T>().Where(WhereLambda).ToList() ?? null;
301         }
302 
303         /// <summary>
304         ///根据查询条件进行分页
305         /// </summary>
306         /// <typeparam name="T"></typeparam>
307         /// <param name="PageIndex">当前页</param>
308         /// <param name="PageSize">每页的大小</param>
309         /// <param name="TotalCount">总记录数</param>
310         /// <param name="ordering">排序条件</param>
311         /// <param name="WhereLambda">查询条件</param>
312         /// <returns></returns>
313         public List<T> Pagination(int PageIndex, int PageSize, out int TotalCount, string Ordering, Expression<Func<T, bool>> WhereLambda = null)
314         {
315             //分页的时候一定要注意 Order 一定在Skip 之前
316             //var QueryList = _DbContextHandle.Set<T>().OrderBy(Ordering);
317             //if (WhereLambda != null)
318             //{
319             //    QueryList = QueryList.Where(WhereLambda);
320             //}
321 
322             //TotalCount = QueryList.Count();
323             //return QueryList.Skip(PageSize * (PageIndex - 1)).Take(PageSize).ToList() ?? null;
324             TotalCount = 0;
325             return null;
326         }
327 
328         /// <summary>
329         ///根据查询条件进行分页
330         /// </summary>
331         /// <typeparam name="T"></typeparam>
332         /// <param name="PageIndex">当前页</param>
333         /// <param name="PageSize">每页的大小</param>
334         /// <param name="TotalCount">总记录数</param>
335         /// <param name="OrderBy">排序条件</param>
336         /// <param name="WhereLambda">查询的条件</param>
337         /// <param name="IsOrder"></param>
338         /// <returns></returns>
339         public List<T> Pagination<TKey>(int PageIndex, int PageSize, out int TotalCount, Expression<Func<T, TKey>> OrderBy, Expression<Func<T, bool>> WhereLambda = null, bool IsOrder = true)
340         {
341             //分页的时候一定要注意 Order一定在Skip 之前
342             IQueryable<T> QueryList = IsOrder == true ? _DbContextHandle.Set<T>().OrderBy(OrderBy) : _DbContextHandle.Set<T>().OrderByDescending(OrderBy);
343 
344             if (WhereLambda != null)
345             {
346                 QueryList = QueryList.Where(WhereLambda);
347             }
348 
349             TotalCount = QueryList.Count();
350             return QueryList.Skip(PageSize * (PageIndex - 1)).Take(PageSize).ToList() ?? null;
351         }
352 
353 
354         /// <summary>
355         /// 执行存储过程的SQL 语句
356         /// </summary>
357         /// <typeparam name="T"></typeparam>
358         /// <param name="Sql">执行的SQL语句</param>
359         /// <param name="Parms">SQL 语句的参数</param>
360         /// <param name="CmdType"></param>
361         /// <returns></returns>
362         public List<T> QueryProc(string Sql, List<MySqlParameter> Parms, CommandType CmdType = CommandType.Text)
363         {
364             //进行执行存储过程
365             if (CmdType == CommandType.StoredProcedure)
366             {
367                 StringBuilder paraNames = new StringBuilder();
368                 foreach (var item in Parms)
369                 {
370                     paraNames.Append(string.Format(" @{item},", item));
371                 }
372                 Sql = paraNames.Length > 0 ? string.Format("exec {Sql} {paraNames.ToString().Trim(',')}", Sql) : string.Format("exec {Sql} ", Sql);
373             }
374             return _DbContextHandle.Set<T>().SqlQuery(Sql, Parms.ToArray()).ToList();
375         }
376 
377 
378         /// <summary>
379         /// 进行回滚
380         /// </summary>
381         /// <typeparam name="T"></typeparam>
382         public void RollBackChanges()
383         {
384             var Query = _DbContextHandle.ChangeTracker.Entries().ToList();
385 
386             Query.ForEach(p => p.State = EntityState.Unchanged);
387         }
388 
389     }
View Code

 

调用示例:

 1   /// <summary>
 2         /// 
 3         /// </summary>
 4         /// <param name="employeeCode"></param>
 5         /// <returns></returns>
 6         public Employee GetEmployee(string employeeCode)
 7         {
 8             if(string.IsNullOrEmpty(employeeCode))
 9             {
10                 return null;
11             }
12                     Repository<Employee> employeeRepository = new Repository<Employee>();
13             Employee emp = employeeRepository.GetFristDefault(p => p.EmployeeCode == employeeCode); 
14             return emp;
15         }
View Code

 

附加自定义查询返回DataSet:

 1  public class BaseSqlDal
 2     {
 3 
 4         //private string _ConnectionString = "Server=127.0.0.1,1433;database=MarketDB;uid=sa;pwd=123456";
 5         /// <summary>
 6         /// 
 7         /// </summary>
 8         private DbContext _DbContextHandle = new DataContext(@"Server=127.0.0.1,1433;database=MarketDB;uid=sa;pwd=123456");//此处进行调用EF的DBContext的实体类或者通过工厂化模式来进行调用。
 9 
10         public List<T> Query<T>(string cmdString) where T : class
11         {
12             return _DbContextHandle.Database.SqlQuery<T>(cmdString).ToList();
13         }
14         public List<T> Query<T>(string cmdString, params object[] parameters) where T : class
15         {
16            
17             return _DbContextHandle.Database.SqlQuery<T>(cmdString, parameters).ToList();
18         }
19         /// <summary>
20         /// 
21         /// </summary>
22         /// <param name="cmdString"></param>
23         /// <param name="dicParameter"></param>
24         /// <param name="sqlDbType"></param>
25         /// <returns></returns>
26         public DataSet QueryDataSet(string cmdString, Dictionary<string, object> dicParameter, SqlDbType sqlDbType)
27         {
28             DataSet ds = new DataSet();
29             SqlConnection connection = _DbContextHandle.Database.Connection as SqlConnection;
30             SqlCommand cmd = new SqlCommand(cmdString, connection);
31             return ds;
32         }
33     }
View Code

 

posted on 2018-01-25 23:05  john_yong  阅读(315)  评论(0编辑  收藏  举报

导航