EF实体框架模型使用Linq获取数据库数据
来源:互联网 发布:dm500账号上传软件 编辑:程序博客网 时间:2024/05/19 18:48
EF实体框架模型对于处理数据库提供了很大的方便。
EF支持多种数据库,如SQL/ORCAL/DB2等;能够与asp.net/wpf/wcf等很好的集成。
此外最方便的就是可以用Linq语句实现数据库操作。
1、首先生成EF实体框架模型,具体步骤参见链接:http://jingyan.baidu.com/article/359911f5703b1757ff03064f.html
2、然后开始用Linq查询获取数据库数据,代码如下:
public List<ProductionEfficiency> stationProductEfficiencies;
public IQueryable<IGrouping<string, ProductionEfficiency>>stationDailyGroup;
public void GetFiltedProdEfficiency(string factory, string line, string shift, string startDay, string endDay)
{
var stationtemp = from pe in ProductionEfficiencies //ProductionEfficiencies是数据表名
where //查询条件
pe.SiteCode.Length > 5 &&
(factory == SELECT_ALL || pe.SiteCode.IndexOf(factory) >= 0) &&
(line == SELECT_ALL || pe.SiteCode.IndexOf(line) >= 0) &&
(shift == SELECT_ALL || pe.ShiftCode.IndexOf(shift) >= 0) &&
string.Compare(pe.ShiftCode.Substring(0, 8), startDay) >= 0 &&
string.Compare(pe.ShiftCode.Substring(0, 8), endDay) <= 0 &&
pe.LotNo.Trim().ToUpper() != testLotNo.Trim().ToUpper()
orderby pe.ShiftCode
select pe;
stationProductEfficiencies = stationtemp.ToList();
stationDailyGroup = from pe in stationtemp group pe by pe.ShiftCode.Substring(0, 8);
}
其中, IQueryable类型是是专门用于数据库查询分组后的数据保存。(注意,当你自己的处理函数用到了对多个数据表的 IQueryable数据的操作,会报错:数据库已经打开了一个表,等待当前表连接关闭。)取数据的时候没问题,上面那个函数里面,后面还可以再接多个查询别的表的分组操作。
数据库查询中还会存在数据表联合查询的情况,联合查询的Linq语句如下:
public Dictionary<string, List<RejectData>> stationRejectGroup;
var rejectTemp = from pr in ProductionRejects //数据表ProductionRejects 和ProductionEfficiencies是相互关联的
join pe in ProductionEfficiencieson pr.EfficiencyID equals pe.EfficiencyID
where
pe.SiteCode.Length > 5 &&
(factory == SELECT_ALL || pe.SiteCode.IndexOf(factory) >= 0) &&
(line == SELECT_ALL || pe.SiteCode.IndexOf(line) >= 0) &&
(shift == SELECT_ALL || pe.ShiftCode.IndexOf(shift) >= 0) &&
string.Compare(pe.ShiftCode.Substring(0, 8), startDay) >= 0 &&
string.Compare(pe.ShiftCode.Substring(0, 8), endDay) <= 0 &&
pe.LotNo.Trim().ToUpper() != testLotNo.Trim().ToUpper()
select new { EffID = pr.EfficiencyID, Station = pe.SiteCode.Substring(2), ShiftCode = pe.ShiftCode, LineCode=pe.SiteCode,FailureMode = pr.FailureMode, Reject = pr.Reject }; //联合查询后抽取自己感兴趣的字段,我是定义了struct RejectData用于保存我需要的字段
var stationRejectGrouptemp = from re in rejectTemp group re by re.Station; //stationRejectGrouptemp取出来的分组后的数据
stationRejectGroup = new Dictionary<string, List<RejectData>>(); //另存取到的数据,便于后面做任何操作
//下面是另存数据的动作
foreach (var group in stationRejectGrouptemp)
{
List<RejectData> temp = new List<RejectData>();
foreach (var rr in group)
temp.Add(new RejectData(rr.EffID, rr.Station, rr.ShiftCode, rr.LineCode, rr.FailureMode, rr.Reject));
stationRejectGroup.Add(group.Key, temp);
}
最后说明一下,在Web.config配置文件里要正确配置数据库的连接字符串,就可以取到数据了。
- EF实体框架模型使用Linq获取数据库数据
- EF-实体框架和Linq(2)
- 使用T4模板为EF框架添加数据库实体注释
- C# 实体模型EF关联数据库
- Entity Framework_成功针对多种数据库使用实体框架(EF)
- 实体框架 (EF) 入门 => 二、在全新的数据库中使用 Code First
- 实体框架 (EF) 入门 => 五、连接和模型
- EF----实体框架集合
- EF实体框架学习
- EF-EntityFrameWork中文名:实体框架(数据持久化框架)
- SOA 数据访问--使用 LINQ To SQL 和实体框架实现灵活的数据访问
- EF(Linq)框架使用过程中的小技巧汇总
- 【EF 1】EF实体框架 原理+实例
- EF实体框架初了解
- 使用EF CodeFirst根据实体类生成数据库
- LINQ通过视图获取数据库随机数据
- EF架构为实体模型添加注释
- StructureMap+EF+Linq搭建MVC框架
- 动态规划-LIS
- 关于select标签的value
- 消除字号标签<h1><h2><h3>的自动换行
- ASP.net(NVelocity)中浏览器端与服务器端频繁交互传值的问题
- 关于C#中对象用作属性
- EF实体框架模型使用Linq获取数据库数据
- 如何在路由器的局域网下使用IIS发布网页
- cocos2dx-JS 多行多列TableView
- 将CAD数据转为shp
- 将线图层在折点出断开
- 线要素的节点提取
- SketchUp与ArcScene之间的数据交流
- 在ArcScene中导入显示自己在SketchUp创建并经过修饰的模型
- Oracle的Flashback用法汇总