Entity FrameWork 6帮助类

  1 public class BaseDAL
  2     {
  3     string strConn = "";
  4     public BaseDAL(string connString)
  5     {
  6         strConn = connString;
  7     }
  8
  9     #region 通用增删改查
 10     #region 非原始sql语句方式
 11     /// <summary>
 12     /// 新增
 13     /// </summary>
 14     /// <param name="entity">实体</param>
 15     /// <returns>返回受影响行数</returns>
 16     public bool Add<T>(T entity) where T : class
 17     {
 18         using (SysDb<T> db = new SysDb<T>(strConn))
 19         {
 20         db.Entry<T>(entity).State = EntityState.Added;
 21         return db.SaveChanges() > 0;
 22         }
 23     }
 24
 25     /// <summary>
 26     /// 修改
 27     /// </summary>
 28     /// <param name="entity">实体</param>
 29     /// <returns>返回受影响行数</returns>
 30     public bool Update<T>(T entity) where T : class
 31     {
 32         using (SysDb<T> db = new SysDb<T>(strConn))
 33         {
 34         db.Set<T>().Attach(entity);
 35         db.Entry<T>(entity).State = EntityState.Modified;
 36         return db.SaveChanges() > 0;
 37         }
 38     }
 39
 40     /// <summary>
 41     /// 删除
 42     /// </summary>
 43     /// <param name="entity">实体</param>
 44     /// <returns>返回受影响行数</returns>
 45     public bool Delete<T>(T entity) where T : class
 46     {
 47         using (SysDb<T> db = new SysDb<T>(strConn))
 48         {
 49         db.Set<T>().Attach(entity);
 50         db.Entry<T>(entity).State = EntityState.Deleted;
 51         return db.SaveChanges() > 0;
 52         }
 53     }
 54
 55     /// <summary>
 56     /// 根据条件删除
 57     /// </summary>
 58     /// <param name="deleWhere">删除条件</param>
 59     /// <returns>返回受影响行数</returns>
 60     public bool DeleteByConditon<T>(Expression<Func<T, bool>> deleWhere) where T : class
 61     {
 62         using (SysDb<T> db = new SysDb<T>(strConn))
 63         {
 64         List<T> entitys = db.Set<T>().Where(deleWhere).ToList();
 65         entitys.ForEach(m => db.Entry<T>(m).State = EntityState.Deleted);
 66         return db.SaveChanges() > 0;
 67         }
 68     }
 69
 70     /// <summary>
 71     /// 查找单个
 72     /// </summary>
 73     /// <param name="id">主键</param>
 74     /// <returns></returns>
 75     public T GetSingleById<T>(int id) where T : class
 76     {
 77         using (SysDb<T> db = new SysDb<T>(strConn))
 78         {
 79         return db.Set<T>().Find(id);
 80         }
 81     }
 82
 83     /// <summary>
 84     /// 查找单个
 85     /// </summary>
 86     /// <param name="seleWhere">查询条件</param>
 87     /// <returns></returns>
 88     public T GetSingle<T>(Expression<Func<T, bool>> seleWhere) where T : class
 89     {
 90         using (SysDb<T> db = new SysDb<T>(strConn))
 91         {
 92         return db.Set<T>().AsExpandable().FirstOrDefault(seleWhere);
 93         }
 94     }
 95
 96     /// <summary>
 97     /// 获取所有实体集合
 98     /// </summary>
 99     /// <returns></returns>
100     public List<T> GetAll<T>() where T : class
101     {
102         using (SysDb<T> db = new SysDb<T>(strConn))
103         {
104         return db.Set<T>().AsExpandable().ToList<T>();
105         }
106     }
107
108     /// <summary>
109     /// 获取所有实体集合(单个排序)
110     /// </summary>
111     /// <returns></returns>
112     public List<T> GetAll<T, Tkey>(Expression<Func<T, Tkey>> orderWhere, bool isDesc) where T : class
113     {
114         using (SysDb<T> db = new SysDb<T>(strConn))
115         {
116         return CommonSort(db.Set<T>().AsExpandable(), orderWhere, isDesc).ToList<T>();
117         }
118     }
119
120     /// <summary>
121     /// 获取所有实体集合(多个排序)
122     /// </summary>
123     /// <returns></returns>
124     public List<T> GetAll<T>(params OrderModelField[] orderByExpression) where T : class
125     {
126         using (SysDb<T> db = new SysDb<T>(strConn))
127         {
128         return CommonSort(db.Set<T>().AsExpandable(), orderByExpression).ToList();
129         }
130     }
131
132     /// <summary>
133     /// 单个排序通用方法
134     /// </summary>
135     /// <typeparam name="Tkey">排序字段</typeparam>
136     /// <param name="data">要排序的数据</param>
137     /// <param name="orderWhere">排序条件</param>
138     /// <param name="isDesc">是否倒序</param>
139     /// <returns>排序后的集合</returns>
140     public IQueryable<T> CommonSort<T, Tkey>(IQueryable<T> data, Expression<Func<T, Tkey>> orderWhere, bool isDesc) where T : class
141     {
142         if (isDesc)
143         {
144         return data.OrderByDescending(orderWhere);
145         }
146         else
147         {
148         return data.OrderBy(orderWhere);
149         }
150     }
151
152     /// <summary>
153     /// 多个排序通用方法
154     /// </summary>
155     /// <typeparam name="Tkey">排序字段</typeparam>
156     /// <param name="data">要排序的数据</param>
157     /// <param name="orderWhereAndIsDesc">字典集合(排序条件,是否倒序)</param>
158     /// <returns>排序后的集合</returns>
159     public IQueryable<T> CommonSort<T>(IQueryable<T> data, params OrderModelField[] orderByExpression) where T : class
160     {
161         //创建表达式变量参数
162         var parameter = Expression.Parameter(typeof(T), "o");
163
164         if (orderByExpression != null && orderByExpression.Length > 0)
165         {
166         for (int i = 0; i < orderByExpression.Length; i++)
167         {
168             //根据属性名获取属性
169             var property = typeof(T).GetProperty(orderByExpression[i].PropertyName);
170             //创建一个访问属性的表达式
171             var propertyAccess = Expression.MakeMemberAccess(parameter, property);
172             var orderByExp = Expression.Lambda(propertyAccess, parameter);
173
174             string OrderName = "";
175             if (i > 0)
176             {
177             OrderName = orderByExpression[i].IsDESC ? "ThenByDescending" : "ThenBy";
178             }
179             else
180             OrderName = orderByExpression[i].IsDESC ? "OrderByDescending" : "OrderBy";
181
182             MethodCallExpression resultExp = Expression.Call(typeof(Queryable), OrderName, new Type[] { typeof(T), property.PropertyType },
183             data.Expression, Expression.Quote(orderByExp));
184
185             data = data.Provider.CreateQuery<T>(resultExp);
186         }
187         }
188         return data;
189     }
190
191     /// <summary>
192     /// 根据条件查询实体集合
193     /// </summary>
194     /// <param name="seleWhere">查询条件 lambel表达式</param>
195     /// <returns></returns>
196     public List<T> GetList<T>(Expression<Func<T, bool>> seleWhere) where T : class
197     {
198         using (SysDb<T> db = new SysDb<T>(strConn))
199         {
200         return db.Set<T>().AsExpandable().Where(seleWhere).ToList();
201         }
202     }
203
204     /// <summary>
205     /// 根据条件查询实体集合
206     /// </summary>
207     /// <param name="seleWhere">查询条件 lambel表达式</param>
208     /// <returns></returns>
209     public List<T> GetList<T, TValue>(Expression<Func<T, TValue>> seleWhere, IEnumerable<TValue> conditions) where T : class
210     {
211         using (SysDb<T> db = new SysDb<T>(strConn))
212         {
213
214         return db.Set<T>().AsExpandable().WhereIn<T, TValue>(seleWhere, conditions).ToList();
215         }
216     }
217
218     /// <summary>
219     /// 根据条件查询实体集合(单个字段排序)
220     /// </summary>
221     /// <param name="seleWhere">查询条件 lambel表达式</param>
222     /// <returns></returns>
223     public List<T> GetList<T, Tkey>(Expression<Func<T, bool>> seleWhere, Expression<Func<T, Tkey>> orderWhere, bool isDesc) where T : class
224     {
225         using (SysDb<T> db = new SysDb<T>(strConn))
226         {
227         return CommonSort(db.Set<T>().AsExpandable().Where(seleWhere), orderWhere, isDesc).ToList();
228         }
229     }
230
231     /// <summary>
232     /// 根据条件查询实体集合(多个字段排序)
233     /// </summary>
234     /// <param name="seleWhere">查询条件 lambel表达式</param>
235     /// <returns></returns>
236     public List<T> GetList<T>(Expression<Func<T, bool>> seleWhere, params OrderModelField[] orderByExpression) where T : class
237     {
238         using (SysDb<T> db = new SysDb<T>(strConn))
239         {
240         return CommonSort(db.Set<T>().AsExpandable().Where(seleWhere), orderByExpression).ToList();
241         }
242     }
243
244     /// <summary>
245     /// 获取分页集合(无条件无排序)
246     /// </summary>
247     /// <returns></returns>
248     public List<T> GetListPaged<T, Tkey>(int pageIndex, int pageSize, out int totalcount) where T : class
249     {
250         using (SysDb<T> db = new SysDb<T>(strConn))
251         {
252         totalcount = db.Set<T>().AsExpandable().Count();//获取总数
253         //需要增加AsExpandable(),否则查询的是所有数据到内存,然后再排序  AsExpandable是linqkit.dll中的方法
254         return db.Set<T>().AsExpandable().Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
255         }
256     }
257
258     /// <summary>
259     /// 获取分页集合(无条件单个排序)
260     /// </summary>
261     /// <returns></returns>
262     public List<T> GetListPaged<T, Tkey>(int pageIndex, int pageSize, Expression<Func<T, Tkey>> orderWhere, bool isDesc, out int totalcount) where T : class
263     {
264         using (SysDb<T> db = new SysDb<T>(strConn))
265         {
266         totalcount = db.Set<T>().AsExpandable().Count();//获取总数
267         //需要增加AsExpandable(),否则查询的是所有数据到内存,然后再排序  AsExpandable是linqkit.dll中的方法
268         return CommonSort(db.Set<T>().AsExpandable(), orderWhere, isDesc).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
269         }
270     }
271
272     /// <summary>
273     /// 获取分页集合(无条件多字段排序)
274     /// </summary>
275     /// <returns></returns>
276     public List<T> GetListPaged<T>(int pageIndex, int pageSize, out int totalcount, params OrderModelField[] orderByExpression) where T : class
277     {
278         using (SysDb<T> db = new SysDb<T>(strConn))
279         {
280         totalcount = db.Set<T>().AsExpandable().Count();//获取总数
281         //需要增加AsExpandable(),否则查询的是所有数据到内存,然后再排序  AsExpandable是linqkit.dll中的方法
282         return CommonSort(db.Set<T>().AsExpandable(), orderByExpression).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
283         }
284     }
285
286     /// <summary>
287     /// 获取分页集合(有条件无排序)
288     /// </summary>
289     /// <returns></returns>
290     public List<T> GetListPaged<T, Tkey>(int pageIndex, int pageSize, Expression<Func<T, bool>> seleWhere, out int totalcount) where T : class
291     {
292         using (SysDb<T> db = new SysDb<T>(strConn))
293         {
294         totalcount = db.Set<T>().AsExpandable().Where(seleWhere).Count();//获取总数
295         //需要增加AsExpandable(),否则查询的是所有数据到内存,然后再排序  AsExpandable是linqkit.dll中的方法
296         return db.Set<T>().AsExpandable().Where(seleWhere).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
297         }
298     }
299
300     /// <summary>
301     /// 获取分页集合(有条件单个排序)
302     /// </summary>
303     /// <returns></returns>
304     public List<T> GetListPaged<T, Tkey>(int pageIndex, int pageSize, Expression<Func<T, bool>> seleWhere,
305         Expression<Func<T, Tkey>> orderWhere, bool isDesc, out int totalcount) where T : class
306     {
307         using (SysDb<T> db = new SysDb<T>(strConn))
308         {
309         totalcount = db.Set<T>().AsExpandable().Where(seleWhere).Count();//获取总数
310         //需要增加AsExpandable(),否则查询的是所有数据到内存,然后再排序  AsExpandable是linqkit.dll中的方法
311         return CommonSort(db.Set<T>().AsExpandable().Where(seleWhere), orderWhere, isDesc).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
312         }
313     }
314
315     /// <summary>
316     /// 获取分页集合(有条件多字段排序)
317     /// </summary>
318     /// <returns></returns>
319     public List<T> GetListPaged<T>(int pageIndex, int pageSize, Expression<Func<T, bool>> seleWhere,
320         out int totalcount, params OrderModelField[] orderModelFiled) where T : class
321     {
322         using (SysDb<T> db = new SysDb<T>(strConn))
323         {
324         totalcount = db.Set<T>().AsExpandable().Where(seleWhere).Count();//获取总数
325         //需要增加AsExpandable(),否则查询的是所有数据到内存,然后再排序  AsExpandable是linqkit.dll中的方法
326         return CommonSort(db.Set<T>().AsExpandable().Where(seleWhere), orderModelFiled).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
327         }
328     }
329     #endregion
330
331     #region 原始sql操作
332     /// <summary>
333     /// 执行操作
334     /// </summary>
335     /// <param name="sql"></param>
336     /// <param name="paras"></param>
337     public void ExecuteSql(string sql, params object[] paras)
338     {
339         using (SysDb db = new SysDb(strConn))
340         {
341         db.Database.ExecuteSqlCommand(sql, paras);
342         }
343     }
344
345     /// <summary>
346     /// 查询列表
347     /// </summary>
348     /// <typeparam name="T"></typeparam>
349     /// <param name="sql"></param>
350     /// <param name="paras"></param>
351     /// <returns></returns>
352     public List<T> QueryList<T>(string sql, params object[] paras) where T : class
353     {
354         using (SysDb db = new SysDb(strConn))
355         {
356         return db.Database.SqlQuery<T>(sql, paras).ToList();
357         }
358     }
359
360     /// <summary>
361     /// 查询单个
362     /// </summary>
363     /// <typeparam name="T"></typeparam>
364     /// <param name="sql"></param>
365     /// <param name="paras"></param>
366     /// <returns></returns>
367     public T QuerySingle<T>(string sql, params object[] paras) where T : class
368     {
369         using (SysDb<T> db = new SysDb<T>(strConn))
370         {
371         return db.Database.SqlQuery<T>(sql, paras).FirstOrDefault();
372         }
373     }
374
375     /// <summary>
376     /// 执行事务
377     /// </summary>
378     /// <param name="lsSql"></param>
379     /// <param name="lsParas"></param>
380     public void ExecuteTransaction(List<String> lsSql, List<Object[]> lsParas)
381     {
382         using (SysDb db = new SysDb(strConn))
383         {
384         using (var tran = db.Database.BeginTransaction())
385         {
386             try
387             {
388             for (int i = 0; i < lsSql.Count; i++)
389             {
390                 if (lsParas != null && lsParas.Count > 0)
391                 {
392                 db.Database.ExecuteSqlCommand(lsSql[i], lsParas[i]);
393                 }
394             }
395             foreach (String item in lsSql)
396             {
397                 db.Database.ExecuteSqlCommand(item);
398             }
399
400             tran.Commit();
401             }
402             catch (Exception ex)
403             {
404             tran.Rollback();
405             throw ex;
406             }
407         }
408         }
409     }
410     #endregion
411     #endregion
412
413     #region 通用属性
414     /// <summary>
415     /// 获取数据库服务器当前时间。
416     /// </summary>
417     public DateTime ServerTime
418     {
419         get
420         {
421         using (SysDb db = new SysDb(strConn))
422         {
423             String sql = "SELECT GETDATE()";
424             Object objServerTime = db.Database.SqlQuery<Object>(sql);
425             return Convert.ToDateTime(objServerTime);
426         }
427         }
428     }
429
430     /// <summary>
431     /// 获取数据库版本。
432     /// </summary>
433     public String DatabaseVersion
434     {
435         get
436         {
437         using (SysDb db = new SysDb(strConn))
438         {
439             try
440             {
441             String sql = "SELECT Version FROM Sys_Version";
442             Object objServerTime = db.Database.SqlQuery<Object>(sql);
443             return Convert.ToString(objServerTime);
444             }
445             catch
446             {
447             }
448             return String.Empty;
449         }
450         }
451     }
452     #endregion
453
454     }
455     public static class QueryableExtension
456     {
457     /// <summary>
458     /// 扩展方法  支持 in 操作
459     /// </summary>
460     /// <typeparam name="TEntity">需要扩展的对象类型</typeparam>
461     /// <typeparam name="TValue">in 的值类型</typeparam>
462     /// <param name="source">需要扩展的对象</param>
463     /// <param name="valueSelector">值选择器 例如c=>c.UserId</param>
464     /// <param name="values">值集合</param>
465     /// <returns></returns>
466     public static IQueryable<TEntity> WhereIn<TEntity, TValue>(this IQueryable<TEntity> source, Expression<Func<TEntity, TValue>> valueSelector,
467         IEnumerable<TValue> values)
468     {
469         if (null == valueSelector) { throw new ArgumentNullException("valueSelector"); }
470         if (null == values) { throw new ArgumentNullException("values"); }
471         ParameterExpression p = valueSelector.Parameters.Single();
472
473         if (!values.Any())
474         {
475         return source;
476         }
477         var equals = values.Select(value => (Expression)Expression.Equal(valueSelector.Body, Expression.Constant(value, typeof(TValue))));
478         var body = equals.Aggregate<Expression>((accumulate, equal) => Expression.Or(accumulate, equal));
479         return source.Where(Expression.Lambda<Func<TEntity, bool>>(body, p));
480     }
481     }
482     public struct OrderModelField
483     {
484
485     public bool IsDESC { get; set; }
486     public string PropertyName { get; set; }
487     }
488 dbcontext类:
489
490 public class SysDb : DbContext
491     {
492         bool isNew = true;//是否是新的sql执行
493         string strMsg = "";//sql执行的相关信息
494         string strConn = "";//数据库连接字符串
495         string UserName = "";//日志用户名称
496         string AdditionalInfo = "";//日志额外信息
497         public SysDb(string connString) : // 数据库链接字符串
498             base(connString)
499         {
500             strConn = connString;
501             Database.SetInitializer<SysDb>(null);//设置为空,防止自动检查和生成
502             base.Database.Log = (info) => Debug.WriteLine(info);
503         }
504
505         public SysDb(string connString, string logUserName, string logAdditionalInfo) : // 数据库链接字符串
506             base(connString)
507         {
508             strConn = connString;
509             Database.SetInitializer<SysDb>(null);//设置为空,防止自动检查和生成
510             UserName = logUserName;
511             AdditionalInfo = logAdditionalInfo;
512             base.Database.Log = AddLogger;
513         }
514
515         protected override void OnModelCreating(DbModelBuilder modelBuilder)
516         {
517             //去掉复数映射
518             modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
519             base.OnModelCreating(modelBuilder);
520         }
521
522         /// <summary>
523         /// 添加日志
524         /// </summary>
525         /// <param name="info"></param>
526         public void AddLogger(string info)
527         {
528             if (info != "\r\n" && (!info.Contains("Sys_EventLog")))
529             {
530                 string strTemp = info.ToUpper().Trim();
531                 if (isNew)
532                 {
533                     //记录增删改
534                     if (strTemp.StartsWith("INSERT") || strTemp.StartsWith("UPDATE") || strTemp.StartsWith("DELETE"))
535                     {
536                         strMsg = info;
537                         isNew = false;
538                     }
539                 }
540                 else
541                 {
542                     if (strTemp.StartsWith("CLOSED CONNECTION"))
543                     {
544                         //增加新日志
545                         using (SysDb db = new SysDb(strConn))
546                         {
547                             try
548                             {
549                 //保存日志到数据库或其他地方
550
551                             }
552                             catch (Exception ex)
553                             {
554                                 using (System.IO.StreamWriter sw = new System.IO.StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "//logError.txt"))
555                                 {
556                                     sw.Write(ex.Message);
557                                     sw.Flush();
558                                 }
559                             }
560                         }
561                         //清空
562                         strMsg = "";
563                         isNew = true;
564                     }
565                     else
566                     {
567                         strMsg += info;
568                     }
569                 }
570
571             }
572         }
573
574
575     }
576     public class SysDb<T> : SysDb where T : class
577     {
578         public SysDb(string connString) : // 数据库链接字符串
579             base(connString)
580         {
581             Database.SetInitializer<SysDb<T>>(null);//设置为空,防止自动检查和生成
582         }
583
584         public SysDb(string connString, string logUserName, string logAdditionalInfo) : // 数据库链接字符串
585             base(connString,logUserName,logAdditionalInfo)
586         {
587             Database.SetInitializer<SysDb<T>>(null);//设置为空,防止自动检查和生成
588         }
589
590         public DbSet<T> Entities { get; set; }
591     }
592 界面使用:(bll层忽略)
593
594 public class BusinessController : Controller
595     {
596         //
597         // GET: /Jygl/Business/
598         BaseBLL basebll = new BaseBLL(WebHelper.Conn);
599
600         public ActionResult GetXMList(int page,int rows)
601         {
602             int count = 0;
603             //查询条件
604             //Expression<Func<JY_XM, bool>> searchPredicate = PredicateBuilder.True<JY_XM>();
605             //searchPredicate = searchPredicate.And(c => c.UserName.Contains(""));
606             Expression<Func<JY_XM, int>> keySelector = u => u.UID;
607             string str = ExceptionHelper<JY_XM>.TryCatchPageQueryJson<int>(basebll.GetListPaged, page, rows, keySelector, false, out count);
608             return Content(str);
609         }
610
611         [HttpPost]
612         public ActionResult XMEdit(JY_XM jyxm)
613         {
614             basebll.Add(jyxm);
615             return View();
616         }
617
618         public ActionResult GetAllGCLB()
619         {
620
621             List<DICT_GCLB> lsGCLB = basebll.GetAll<DICT_GCLB>();
622             DICT_GCLB dicNew=new DICT_GCLB();
623             dicNew.GCLBText="-请选择-";
624             dicNew.GCLBId=0;
625             lsGCLB.Add(dicNew);
626
627             return Content(WebHelper.Json(lsGCLB));
628         }
629
630         public ActionResult GetAllArea()
631         {
632             List<DICT_Area> lsArea = basebll.GetAll<DICT_Area>();
633             DICT_Area dicNew=new DICT_Area();
634             dicNew.AreaText="-请选择-";
635             dicNew.AreaId=0;
636             lsArea.Add(dicNew);
637             return Content(WebHelper.Json(lsArea));
638         }
639     }
时间: 2024-12-20 02:08:23

Entity FrameWork 6帮助类的相关文章

Asp.Net MVC 模型(使用Entity Framework创建模型类) - Part.1

这篇教程的目的是解释在创建ASP.NET MVC应用程序时,如何使用Microsoft Entity Framework来创建数据访问类.这篇教程假设你事先对Microsoft Entity Framework没有任何的了解.读完本篇教程,你将会理解如何使用Entity Framework来选择.插入.更新和删除数据库记录. Microsoft Entity Framework是一个对象关系映射(O/RM)工具,它能你让自动从数据库生成数据访问层.Entity Framework能够使你免于手工

Asp.Net MVC 模型(使用Entity Framework创建模型类)

这篇教程的目的是解释在创建ASP.NET MVC应用程序时,如何使用Microsoft Entity Framework来创建数据访问类.这篇教程假设你事先对Microsoft Entity Framework没有任何的了解.读完本篇教程,你将会理解如何使用Entity Framework来选择.插入.更新和删除数据库记录. Microsoft Entity Framework是一个对象关系映射(O/RM)工具,它能你让自动从数据库生成数据访问层.Entity Framework能够使你免于手工

Asp.Net MVC 使用Entity Framework创建模型类

先来说说LINQ to SQL和Entity Framework的区别: LINQ to SQL和Entity Framework都是一种包含LINQ功能的对象关系映射技术.他们之间的本质区别在于EF对数据库架构和我们查询的类型实行了更好的解耦.使用EF,我们查询的对象不再是完全对应数据库架构的C#类,而是更高层的抽象:Entity Data Model.这为我们提供了额外的灵活性,但是在性能和简单性上面也会有所损失. LINQ to SQL和Entity Framework各有所长,LINQ

ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类.指定数据库连接字符串以及创建一个数据库.最后,我们还将添加视图和控制器来管理和显式产品和分类数据. 注意:如果你想按照本章的代码编写示例,你必须完成第一章或者直接从www.apress.com下载第一章的源代码. 2.1 添加模型类 Entity Framework的代码优先模式允许我们从模型类创

Asp.Net MVC Entity Framework

Asp.Net MVC 模型(使用Entity Framework创建模型类) - Part.1 这篇教程的目的是解释在创建ASP.NET MVC应用程序时,如何使用Microsoft Entity Framework来创建数据访问类.这篇教程假设你事先对Microsoft Entity Framework没有任何的了解.读完本篇教程,你将会理解如何使用Entity Framework来选择.插入.更新和删除数据库记录. Microsoft Entity Framework是一个对象关系映射(O

MVC5 Entity Framework学习之读取相关数据

前一篇文章中完成了School 数据模型,接下来你将学习如何读取和显示相关的数据--这里指Entity Framework加载至导航属性中的数据. 下图是完成后的效果图 延迟.预先和显示加载相关数据 Entity Framework可以通过多种方法向实体的导航属性中加载数据 延迟加载(Lazy loading) 当实体第一次被读取时,相关数据并不会被检索.但是,当你第一次访问导航属性时,该导航属性所需的数据会自动加载.这是向数据库发送多个查询语句的结果--一次是读取实体本身,接着是每次与被检索的

Entity Framework 实体框架的形成之旅--为基础类库接口增加单元测试,对基类接口进行正确性校验(10)

本篇介绍Entity Framework 实体框架的文章已经到了第十篇了,对实体框架的各个分层以及基类的封装管理,已经臻于完善,为了方便对基类接口的正确性校验,以及方便对以后完善或扩展接口进行回归测试,那么建立单元测试就有很大的必要,本篇主要介绍如何利用VS创建内置的单元测试项目进行实体框架的基类接口测试. 在采用单元测试这个事情上,很多人可能想到了NUnit单元测试工具和NMock工具进行处理,其实微软VS里面也已经为我们提供了类似的单元测试工具了,可以不需要使用这个第三方的单元测试工具,经试

在Entity Framework 4中映射现有实体类(POCO)

Entity Framework的全称是ADO.NET Entity Framework,是微软开发的基于ADO.NET的ORM(Object/Relational Mapping)框架. Entity Framework的主要特点: 1. 支持多种数据库(Microsoft SQL Server, Oracle, and DB2): 2. 强劲的映射引擎,能很好地支持存储过程: 3. 提供Visual Studio集成工具,进行可视化操作: 4. 能够与ASP.NET, WPF, WCF, W

Entity Framework学习一:在.net类基础上创建新数据库

此文章为读Code-First develoment with entity framework简单笔记. 1.首先我们创建一个Person类 public class Person { public int PersonId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } 接着创建Context类,该类继承于DbContext类 public class Con