摘要:
EF4.0默认开启缓存机制,如果想要禁用缓存机制的话,则须加上一句话:_db.CreateObjectSet().MergeOption = MergeOption.OverwriteChanges; public IQueryable LoadEntities(Func whereLambda) { try { var set = _db.CreateObjectSet(); set.MergeOption = MergeOption.OverwriteChanges; ... 阅读全文
随笔分类 - Linq
How Can You Tell the Difference Between LINQ Methods and Query Builder Methods?
2014-01-15 08:53 by ARMdong, 171 阅读, 收藏,
摘要:
LINQ's method syntax looks very similar to the query builder methods,except for one big difference:the parameters.Theparameters of a LINQ method ara lambda expressions,whereas the parameters of the query builder methods are Entity SQL string expressions.A number of methods have the same name:Whe 阅读全文
EF中避免查询重复执行的手段
2014-01-09 18:34 by ARMdong, 597 阅读, 收藏,
摘要:
由于ef有lazyload机制,编写的查询语句往往都没有立即执行,当你轮训结果集的时候才会将查询翻译成database端的sql语句,执行sql将结果返回到方法中。但是,下次再使用前面的结果集的时候,又会再一次的到数据库中去查询数据。因此,有时候我们希望这个查询只执行一次,而不是每次使用结果集的时候都去数据库查询,下面有几个解决方案:希望拿到结果集:1、使用ToList()强制执行;2、使用ToArray();拿到单一数据:1、Single() 或 SingleOrDefault();2、First() 或 FirstOrDefault(); 阅读全文
Linq学习之路(07) - 使用Linq进行参数化编程step by step
2013-05-19 16:38 by ARMdong, 1333 阅读, 收藏,
摘要:
我们在程序中往往需要添加过滤器的功能,检索数据的时候希望按照某些条件进行筛选或者排序,解决方案有很多种,比如拼SQL语句或者进行参数化编程。拼过滤条件是最低级最不安全的一种解决方案,不能很好的表现出面向对象编程的思想,正好本人最近在研究Linq,那么今天本人就使用Linq进行参数化编程,数据源还是参考我前面写的那些文章。给大家看一下UI:这里我们希望根据Title检索关键字,PageCount主要是想过滤掉那些不满足条件的Objects,SortOrder主要就是指定按照什么条件进行排序,有升序也有降序。主要界面就是这样,好吧,下面我们就开始如何一步一步实现这些功能:step1:初始换窗体 . 阅读全文
Linq学习之路(06) - Linq设计模式之ForEach模式
2013-05-19 11:46 by ARMdong, 1277 阅读, 收藏,
摘要:
废话不多说,我们直接看一个demo:输出PageCount大于等于100页的所有Book的标题。标准方法:var books = from book in SampleData.Books where book.PageCount >= 100 select book;foreach (var book in books){ Console.WriteLine(book.Title);}输出结果:这段代码很简单,首先检索所有pageCount大于等100的书籍,然后遍历检索的结果,输出他们的书名。但是现在我有个需求,能不能在Linq query expression中直... 阅读全文
Linq学习之路(05) - 教你如何使用Linq To CSV
2013-05-18 22:21 by ARMdong, 1861 阅读, 收藏,
摘要:
我们知道Linq to Objects、Linq to SQL、Linq to XML非常方便,但是Linq同样也可以处理csv文件,今天我将告诉大家使用Linq处理文本文件同样很爽!!!!csv文件是(逗号分隔值)的英文缩写,通常都是纯文本文件。每个值都是通过逗号“,”分隔开来的。现在我这里有一个学生表,里面有几条学生信息,是用csv文件保存起来的,我截图给大家看看:接下来我使用Linq将students.csv文件中的这些学生信息输出到控制台中: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 阅读全文
Linq学习之路(04) - Linq基础揭秘
2013-05-18 14:06 by ARMdong, 1089 阅读, 收藏,
摘要:
本系列的前两篇文章主要讲了C#3.0引入的新特性,也正是这些新特性让Linq成为可能。我先总结一下前面的知识点,我简单的列举出来:■ Implicitly typed local variables:隐式类型局部变量■ Object initializers:对象初始化器■ Lambda expressions:Lambda表达式■ Extension methods:扩展方法■ Anonymous types:匿名类型我简单的画了一张图来描述他们在Linq中扮演的角色:这里我为什么又拿出来呢,因为在接下来的篇幅中,我们总会用到上面这些知识点,因为他们太重要了。好了,我们进入今天的主题:这篇文 阅读全文
Linq学习之路(03) - 什么使Linq变得如此简单(二)?
2013-05-12 16:30 by ARMdong, 1299 阅读, 收藏,
摘要:
我们接着上篇Linq系列文章继续谈Linq的基石,上篇文章中,我们谈到了隐式类型局部变量以及对象集合初始化器,今天我们说说Lambda表达式、扩展方法和匿名类型。按计划,这篇文章昨天就应该写出来了,可是昨天确实很累,给自己定的目标是每天都写一篇技术文章,来总结每天学习的成果。又给自己的懒惰找借口了。。。 好吧,言归正传。对了,昨天马云好像辞去了阿里巴巴CEO一职,哎,羡慕啊,向他学习。希望能从他身上学点东西…… 呵呵,又扯了,这次真的进入到主题。我们接着上篇文章中用到的实例,我们继续给这个实例进行进一步的优化。现在,我想给DisplayProcess方法添加一个过滤条件,输出占用内存空... 阅读全文
Linq学习之路(02) - 什么使Linq变得如此简单(一)?
2013-05-09 23:36 by ARMdong, 1503 阅读, 收藏,
摘要:
在这篇文章中,我主要简单的阐述一下Linq的基石:隐式类型局部变量、对象集合初始化器、Lambda表达式、扩展方法还有匿名类型;C#3.0中为我们提供了这些语法,本文主要围绕一个实例让大家了解如何通过这些技术来改善我们的代码。这个实例非常简单,就是将我们的计算机中正在跑的程序输出到控制台中显示。传统的方法:创建一个控制台项目 (1)、首先定义一个描述进程的实体类ProcessData: /// <summary> /// 进程实体类 /// </summary> class ProcessData { /// <summary> /... 阅读全文
Linq学习之路(01) - 实体类与数据表的映射(Entity Class Mapping To The Relation Database Tables)
2013-05-08 22:56 by ARMdong, 1489 阅读, 收藏,
摘要:
这篇文章主要描述如何将一个关系型数据库中的表映射到具体的实体类中;也是本人在Linq学习之路上的一点总结,本篇文章是本人对Linq学习总结的第一篇文章,也是对自己学习的一个肯定,现将心得分享给大家,由于文采不佳,大家凑合看吧! Linq非常强大,至于为什么非常强大,建议大家去MSDN上面查找Linq的相关介绍;开门见山,也就不对Linq做太多介绍了,假设大家看到这篇文章的时候都知道Linq的重要性了,Entity Mapping To The Relation Database Tables 是Linq To SQL方面的技术,Linq主要的方向有Linq To Object、Linq ... 阅读全文
浙公网安备 33010602011771号