ADO.NET 与 Entity Framework 与 Linq To SQL 等 ORM 小记
2010-08-31 22:27 音乐让我说 阅读(488) 评论(0) 收藏 举报- 在LINQ 中:
System.Data.Linq.SqlClient.SqlMethods.DateDiffDay(Convert.ToDateTime("2010-08-01"), DateTime.Now); /* 返回 2010-08-01 与今天相差的天数,DateTime.Now 大于 2010-08-01 则返回正数 */
- 在Linq to sql 中:
IQueryable<Purchase> query = purchases.Where(p => SqlMethods.Like(p.Description, "%" + p.Customer.Name + "%") ) .OrderBy(p => p.ID).Select(p => p);
- EF Code First 如何输出 EF 的日志?
Context.Database.Log = new Action<string>(q => Debug.WriteLine(q));
- Dapper 下载
- EfRepository 设计下载
- 关于连接查询分组统计我们可以使用SelectMany,如下:
监控sql如下:(是不是简洁多了呢?)
关于SelectMany资料:
http://www.cnblogs.com/lifepoem/archive/2011/11/18/2253579.html
- 附加一个实体到 EF 的上下文
/// <summary> /// 附加一个实体到 EF 的上下文,或者返回一个已经被附加的实体,前提是它已经被附加过了。 /// </summary> /// <typeparam name="TEntity">要附加的实体的类型</typeparam> /// <param name="entity">要附加的实体的实例</param> /// <returns>已经被附加的实体</returns> protected virtual TEntity AttachEntityToContext<TEntity>(TEntity entity) where TEntity : new() { //在实体框架真正支持存储过程之前,这个是有必要的 //否则,在实体附加到上下文之前,不会加载已加载实体的导航属性。 var alreadyAttached = context.Set<TEntity>().Local.FirstOrDefault(x => x.Id == entity.Id); if (alreadyAttached == null) { context.Set<TEntity>().Attach(entity); return entity; } return alreadyAttached; }
- 使用 EF 时,记得一定要在不准备修改实体的时候,在从 EF 拿数据的时候就要调用 AsNoTracking() 方法,意思是让 EF 不要自动跟踪实体的变化,从而加快获取速度。常见的有 获取分页列表等等。
context.Set<TEntity>().AsNoTracking()
- 谢谢浏览!
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。