代码改变世界

随笔分类 - Entity Framework

Visual Studio 2015上安装Entity Framework Power Tools

2016-01-05 07:54 by JustRun, 2167 阅读, 收藏, 编辑
摘要:Entity Framework Power Tools是个非常好用的EF Code First插件。通过它能够非常简单地生成和数据库结构匹配的model和dbcontext代码。使用的方法,这里有介绍 旧项目如何切换到Entity Framework Code FirstVisual Studio... 阅读全文

Lazy<T>在Entity Framework中的性能优化实践(附源码)

2013-10-27 18:12 by JustRun, 5080 阅读, 收藏, 编辑
摘要:在使用EF的过程中,导航属性的lazy load机制,能够减少对数据库的不必要的访问。只有当你使用到导航属性的时候,才会访问数据库。但是这个只是对于单个实体而言,而不适用于显示列表数据的情况。这篇文章介绍的是,使用Lazy来提高显示列表页面的效率。这里是相关的源代码 PerformanceTest.zip阅读目录:一、问题的描述二、数据表和EF实体介绍三、lazy load的性能四、使用StudentExtensionRepository来提高效率五、进一步改进,使用StudentExtensionRepository1来实现按需访问数据库六、总结一,问题的描述在使用EF的过程中,导航属性的l 阅读全文

Entity Framework做IN查询

2013-09-14 11:43 by JustRun, 4352 阅读, 收藏, 编辑
摘要:开发中遇到的Too high level of nesting for select错误项目使用了Entity Framework结合Mysql, 遇到了一个非常奇怪的性能问题,一个看起来非常简单的查询通过不了。报出错误, “Too high level of nesting for select”。整个查询非常简单,只是从表中取到属于一个集合中的id的数据, 比如从表中取到OfficeId 是1, 2,3,6的数据。Expression&gt; filter = office =&gt; officeIds.Any(id =&gt; id == office.OfficeID);var of 阅读全文

分享基于Entity Framework的Repository模式设计(附源码)

2013-09-07 20:59 by JustRun, 16910 阅读, 收藏, 编辑
摘要:关于Repository模式,在这篇文章中有介绍,Entity Framework返回IEnumerable还是IQueryable?这篇文章介绍的是使用Entity Framework实现的Repositoy模式设计,欢迎各位拍砖.阅读目录:一、实现的思路和结构图二、Repository设计具体的实现代码三、Repository设计的具体的使用四、总结一,实现的思路和结构图总结一下,Repository在实际使用中,有下面三种特点:Repository的共同性有一些公共的方法(增删改查), 这些方法无关于Repository操作的是哪个实体类,可以把这些方法定义成接口IRepository, 阅读全文

Entity Framework返回IEnumerable还是IQueryable?

2013-08-15 23:02 by JustRun, 6061 阅读, 收藏, 编辑
摘要:在使用EF的过程中,我们常常使用repository模式,本文就在repository层的返回值是IEnumerable类型还是IQueryable进行探讨。阅读目录:一、什么是Repository模式?二、IEnumerable还是IQueryable的区别三、实际检验IEnumerable和IQueryable的效率差别四、总结一, 什么是Repository模式?Repository是隔离在数据访问层和业务逻辑层之间的。它提供业务逻辑各种对象,使得业务逻辑代码不需要关心数据是如何存储和获取的。下图,是MVC中使用Repository模式的模型图。Controller调用Repositor 阅读全文

Entity Framework在Asp.net MVC中的实现One Context Per Request(附源码)

2013-08-10 00:22 by JustRun, 3478 阅读, 收藏, 编辑
摘要:上篇中&quot;Entity Framework中的Identity map和Unit of Work模式&quot;, 由于EF中的Identity map和Unit of Work模式,EF体现出来如下特性:唯一性: 在一个Context的生命周期中,一个Entity只会有一个实例,任何对该实例的修改,即使这些改动没有保存到数据库中,修改都会影响到整个Context的生命周期。事务性: 所有对于Entity的修改,都会在调用SaveChange方法的时候,一起保存到数据库中,最终实现持久化。下面基于EF的上面特点,分析一下为什么需要在MVC中实现One Context Per Reque 阅读全文

Entity Framework中的Identity map和Unit of Work模式

2013-08-07 22:59 by JustRun, 2000 阅读, 收藏, 编辑
摘要:阅读目录:一、什么是Identity map模式二、关于Identity map模式的验证示例三、Unit of Work 模式四、总结和注意的问题一,什么是Identity map模式Identity map是EF获取和缓存数据的模式。Identity map模式指的是任何数据都只会被加载一次,以map的形式缓存,以唯一的identity来再次获取这些数据。在EF中,就是在一个Context的生命周期中,所有查询过的数据都会缓存到Context的local中缓存。当再次访问这些数据的时候,就会以主键(identity)从缓存中获取这些数据。二,关于Identity map模式的验证示例看看下 阅读全文

旧项目如何切换到Entity Framework Code First

2013-08-06 23:57 by JustRun, 944 阅读, 收藏, 编辑
摘要:Entity Framework Code First固然是好东西,然而如果是已经存在的旧有项目,如何简单方便的使用切换呢?这里介绍一个VS的插件Entity Framework Power Tools Beta 3下载地址是:http://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d安装完成后,打开VS,在项目上右键,就能看到如下的选项了。点击以后,弹出一个数据库连接设置window, 选择项目的数据库,耐心等待一下,工具就能够为该数据库生成所有的实体类了。 阅读全文

使用MiniProfiler给Asp.net MVC和Entity Framework号脉(附源码)

2013-07-28 11:42 by JustRun, 3888 阅读, 收藏, 编辑
摘要:在学习python开发框架pylons/pyramid的过程中,里面有个非常棒的页面性能监控功能,这样在开发过程中,你能清楚的知道当前页面的性能以及其它参数。这里介绍一下如何给Asp.net MVC和Entity Framework也添加上性能监控,让你在开发过程中随时掌握当前程序运行的信息。这里是在Autofac+MVC+EF篇的源码基础上,一步一步的介绍添加Profiler的过程。如果有兴趣了解Autofac的应用,可以看这里 IoC容器Autofac(4) - Autofact + Asp.net MVC + EF Code First(附源码)最终源代码在这里 MiniProfiler 阅读全文

推荐博客文章

2013-04-09 13:54 by JustRun, 2355 阅读, 收藏, 编辑
摘要:这里是一些个人感觉本博客里比较值得一看的文章。开发和常用工具推荐清单.Net基础枚举类型转换成字符串Math.Round和四舍五入关于DateTime和String转换的容易犯得错误C#只允许运行应用程序的一个实例的正确写法.net中的对象序列化(1): 序列化是什么, 以及一个简单的例子.net中... 阅读全文

如何处理Entity Framework中的DbUpdateConcurrencyException异常

2012-10-10 10:29 by JustRun, 2512 阅读, 收藏, 编辑
摘要:1. Concurrency的作用场景有个修改用户的页面功能,我们有一条数据User, ID是1的这个User的年龄是20, 性别是female(数据库中的原始数据)正确的该User的年龄是25, 性别是male这个时候A发现User的年龄不对, 就给改成25, 那么在Entity Framework中,我们会这样做。var user = dbConext.User.Find(1);//B用户在这里完成修改了User的性别user.age = 25;dbContext.SaveChanges();但是加入在上面注释处,有个B用户发现性别不对,完成了对用户性别的修改,改成male. 会出现什么结 阅读全文

Entity Framework练习题

2012-10-09 15:16 by JustRun, 693 阅读, 收藏, 编辑
摘要:1. 问题: 变量id2的值是1,还是2? 假如如下面的注释操作,movies2有几条记录?里面会包含ID = 1的记录吗?var id1 = db.Movies.First().ID;var movies1 = db.Movies.ToList();var movie = from m in db.Movieswhere m.ID.Equals(1)select m;movie.First().ID = 2;var id2 = db.Movies.First().ID;//下面设置断点,运行到断点处后,手动向数据库中再添加一条记录var movies2 = db.Movies.ToList( 阅读全文

Entity Framework中的DataAnnotations

2012-09-26 00:16 by JustRun, 917 阅读, 收藏, 编辑
摘要:Model使用DataAnnotations定义数据库和验证using System.ComponentModel.DataAnnotations;using System.ComponentModel.DataAnnotations.Schema注意这里的验证会在web客户端和EF端同时验证。[Key] 数据库: 定义主键[Required] 数据库: 会把字段设置成not null验证: 会要求必须输入是否可以为null [Required(AllowEmptyStrings = false)] 不能为null和空字符串[MaxStringLegth]数据库: 字段长度验证: 验证是否超出 阅读全文

Entity Framework中的Migrations

2012-09-19 09:28 by JustRun, 654 阅读, 收藏, 编辑
摘要:Migrations是Entity Framework中非常有意思的一个工具。Migrations 的目的是用来跟踪数据库的改变。假如我们想回滚到一个月前的代码,非常容易,有版本管理工具。但是要回滚到当时的数据库,怎么办呢?这就是Migrations的作用,以代码的形式记录每次数据库变更,使得数据库也有了版本管理使用:Tools -&gt; Library Package Manager -&gt; Package Manager ConsoleRun the Enable-Migrations command in Package Manager Console 生成初始化的数据库结构代码文 阅读全文

理解POCO

2012-09-18 13:42 by JustRun, 681 阅读, 收藏, 编辑
摘要:转自 http://kb.cnblogs.com/page/89526/理解POCO(Plain Old CLR Object)先要理解POJO。 1、什么是POJO? POJO的名称有多种,pure old java object 、plain ordinary java object 等。 按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的java对象”,但大家都使用“简单java对象”来称呼它。 POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。 POCO的概念是从j... 阅读全文