entity framework 6 通用数据类

原文  http://blog.csdn.net/laokaizzz/article/details/25730813

  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-10-08 18:31:16

entity framework 6 通用数据类的相关文章

entity framework 6 自己编写的通用数据类

//dal类: public class BaseDAL { string strConn = ""; public BaseDAL(string connString) { strConn = connString; } #region 通用增删改查 #region 非原始sql语句方式 /// <summary> /// 新增 /// </summary> /// <param name="entity">实体</par

[翻译] - &lt;Entity Framework&gt; - 直接执行数据库命令

原文:[翻译] - <Entity Framework> - 直接执行数据库命令 纯属学习上的记录, 非专业翻译, 如有错误欢迎指正! 原文地址: http://msdn.microsoft.com/en-us/library/gg715124(v=vs.103) 使用 EF 4.1 或者更新版本, 你可以直接执行任何数据库命令. 在本节介绍的方法允许你对数据库执行原生的 SQL 命令. 通过 SQL 查询语句获取实体对象集 DbSet 类中的 SqlQuery 方法允许你执行一个返回实体对象

浅谈Entity Framework中的数据加载方式

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Architecture.aspx,其中的一系列文

EntityFramework_MVC4中EF5 新手入门教程之六 ---6.通过 Entity Framework 更新关联数据

在前面的教程中,您将显示相关的数据 :在本教程中,您会更新相关的数据.对于大多数的关系,这个目标是可以通过更新相应的外键字段来达到的.对于多对多关系,实体框架并不直接,暴露联接表,因此您必须显式添加和删除,并从相应的导航属性的实体. 下面的插图显示页面,您将利用工作. 为课程自定义创建和编辑页面 当创建新的课程实体时,它必须拥有一个关系到现行的部门.为了推动这项工作,搭建的代码包括控制器方法,并且创建和编辑视图中包括用于选择处的下拉列表.下拉列表中设置Course.DepartmentID的外键

EntityFramework_MVC4中EF5 新手入门教程之五 ---5.通过 Entity Framework 读取相关数据

在前面的教程中,您完成School数据模型.在本教程中,您会读取和显示相关的数据 — — 那就是,实体框架将加载到导航属性的数据. 下面的插图显示页面,您将完成的工作. 延迟. 预先,和显式加载的相关数据 有实体框架可以将相关的数据加载到一个实体的导航属性的几种方法: 延迟加载.当第一次读的实体时,并不被检索相关的数据.然而,第一次尝试访问导航属性,该导航属性所需的数据是自动检索.这将导致多个查询发送到数据库 — — 一个用于该实体本身,一个必须检索每个相关的实体的数据的时间. 预先加载.当读取

Entity Framework加载数据的三种方式。

MSDN文章Loading Related Entities 有 Eagerly Loading Lazy Loading Explicitly Loading 三种方式. 而看到查询中包含Include方法就知道是Eagerly Loading.

Entity Framework Code First实体关联数据加载

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 在项目过程中,两个实体数据之间在往往并非完全独立的,而是存在一定的关联关系,如一对一.一对多及多对多等关联.存在关联关系的实体,经常根据一个实体的实例来查询获取与之关联的另外实体的实例. Entity Framework常用处理数据关联加载的方

Entity Framework后台采用分页方式取数据与AspNetPager控件的使用

转载至:http://www.cnblogs.com/jaxu/p/3655582.html 本文是一个对AspNetPager控件使用的笔记! 有关AspNetPager控件可以查看杨涛主页.这是一个开放的自定义ASP.NET控件,支持各种自定义的数据分页方式,使用很方便,而且功能也很强大,网站开发过程中使用该控件可以省去很多不必要的麻烦. 本页下载:AspNetPager745DLL.zip 然后看一下在页面上如何通过Entity Framework将分页数据传递给该控件以实现真分页. 页面

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能够使你免于手工