文章分类 - EF
1
摘要:今天主要针对ObjectContext情况下的批量操作作一个详细的说明,首先,要说明一点,批量操作不用ObjectContext提供的方法,而是使用拼SQL串的方式,将列表拼成一个SQL串,一次的发给数据库,这样在性能上绝对是一个质的飞越,本人尝试过,无论是EF还是linq to sql,它们提供的方法,对于列表的操作会产生N条SQL串(N=列表的长度)。一个操作类型枚举:1 /// <summary>2 /// 執行SQL的類型3 /// </summary>4 public enum SQLType5 {6 ...
阅读全文
摘要:转载自:http://www.cnblogs.com/lori/archive/2011/07/22/2114054.htmlEF4.1学了有段时间了,没有静下来好好研究它的架构,今天有空正好把它的架构及数据操作这段拿出来,希望给大家带来帮助,对我自己也是一种总结:P从图中可以看到,我们用的是MVC3进行程序开发的,哈哈,也是刚开始用3.0,项目整体架构还是传统三层,其它公用层我就不说了,服务层和UI层也不说了,单说EF还在的实体层和数据层,我用EF生成器把它生成后,又整理了一个,因为我不想让EF的低层方法暴露给业务层.我来一个一个的说我的方案:OAContext.cs:这是生成器生成的,这不
阅读全文
摘要:很多时间之长,我写了EF架构~性能高效的批量操作(Insert篇),而今天我把Update篇也写一下,这对于批量处理数据很有帮助,它解决了EF与linq to sql批量更新数据上的效率问题。对于EF架构中的批量更新操作,需要我们为实体的导航属性进行手动的标示,因为EF生成的实体中没有一个特殊的说明,所以,我们必须要告诉系统,哪个属性是导航属性,而导航属性是我们不去进行update的。1 /// <summary>2 /// 属性的导航属性3 /// </summary>4 public class NavigationAttribute : Attribute5...
阅读全文
摘要:无论是linq to sql 还是entity frameworks,在进行列表操作时都会有一个毛病,那就是它的操作只能一个实体一个实体的发到服务器,这样,如果列表的数量很大,如列表为10万条数据,那么,这种操作将是非常性能的,可能你的DB就挂了。解决方案:拼接T—SQL串,并使它具有通用性好处:与服务器建立一次连接,给服务器发一条SQL命令,即可实现代码如下: 1 /// <summary> 2 /// 构建Insert语句串 3 /// 主键为自增时,如果主键值为0,我们将主键插入到SQL串中 4 /// </summary> 5 ...
阅读全文
摘要:使用EF架构时,你的实体生成方案有多种,entity object,poco,dbcontext等等,对于entity object方案生成的实体,我们感觉很臃肿,当然它的功能很强在,但有时在查看类实体时,有些麻烦,因为所有实体都在一个类文件中,有点像linq to sql,而它的类格局也与dbml有些雷同,当然这不是今天的重点,今天主要说的是当EDMX文件添加注释后,如何把注释同时添加到dbcontext实体上。方案:修改dbcontext的T4模版实现:找到以下代码块先为类加注释string summary=string.Empty;foreach (var entity in ItemC
阅读全文
摘要:Entity Framework 5 发布有一定时间了,但学习资源确实不多,更何况英语差的我,看英语确实费力,不管怎么样,问题还是解决了,查看很多人写的文章(让我看的想放弃,更想找到答案),都没有到到关于自定义代码生成的模板的文章,最后打开VS2010 创建了一个model.tt文件,最终在它里面找到了相应的方法,现给大家分享一下。(最近也写过两篇关于EF5的文章) 在自定义过程中,发现有几处问题,可能是Bug,也可能是故意这样设计的,但这两位问题对个人来说,还是有一定的影响,总觉得不太完美,希望这几位在后续的版本当中会得到改善,下面会列出这几个问题。第一步:介绍一下Model的目录结构,..
阅读全文
摘要:MVC4中常用的短句及配置归结(部分)文章转载自:http://www.cnblogs.com/outtamyhead/archive/2013/01/07/2849541.html1、实体类Attribute:需要引用命名空间System.ComponentModel.DataAnnotations[Required(ErrorMessage="")]:表示字段必须,在提交时进行验证,不通过返回ErrorMessage。[DisplayFormat(NullDisplayText="",DataFormatString="")]:用
阅读全文
摘要:一、创建一个MVC4应用程序首先打开VS2012,选择【新建项目】弹出新建项目对话框,选择【ASP.NET MVC4 WEB 应用程序】。如图:修改名称为我们想要的名称,在这里我命名为“MyMVC4Web”,目录设置在了我的E盘exercise文件夹下。随后会出现模板选择框,我们选择Internet应用程序,视图引擎使用Razor,如果有需要可以创建单元测试。【确定】之后就等待VS自动加载需要的东西。加载完成之后,【解决方案资源管理器】如下图所示。这样,MVC4应用程序的“Hello World”程序就创建完成了。运行看一下效果。二、MVC4中的一些变化首先在项目中对Global.asax进行
阅读全文
摘要:文章来自:http://www.cnblogs.com/outtamyhead/archive/2013/02/26/2933361.html一、补充1、EF对主键的处理 我们在上一节中的Movie实体中并没有设置ID列为主键列,但是在数据表创建完成之后我们看到ID列成为了主键。这是因为EF会对实体类中ID进行检索,对于出现ID之后,会自动设置ID为主键,如果ID为int类型,则被设置成自增长的主键列。同样,以实体类名+ID形式的组合名称,EF同样也会将其设置成主键列,加入我们Movie中没有ID,而是MovieID,则MovieID就会被设置成主键。同时,我们也可以在ID或者MovieID.
阅读全文
摘要:1、过滤器介绍 要使用过滤器,我们的过滤器类需要继承ActionFilterAttribute抽象类。 在我们的过滤器类里需要重写(override)OnActionExecuting(ActionExecutingContext filterContext)和OnActionExecuted(ActionExecutedContext filterContext) 过滤器的作用在于:判断用户登录和权限、动态Action、防篡改等等。2、创建自己的过滤器 我们创建的这个过滤器的作用主要是用来记录日志,所以在开始之前,我们需要在【Models】文件夹下新建一个名为OperLog的类,类的...
阅读全文
摘要:一、在MSSQL2008R2中创建数据库 首先,我们需要在MSSQL2008R2中创建一个名为Movie的数据库,具体的参数这里不讲,默认即可。然后【新建查询】。 因为在我们之前的代码中,我们已经通过code first创建好了我们需要使用的数据库和表,所以我们只需要将这些表结构倒出来然后放到刚刚的新建查询里去执行就可以了。由于先前的库在localdb中,所以,我们需要在vs中打开localdb的连接。 然后在表名上右键选择【打开表定义】,获得创建表的T-SQL语句。然后拷贝T-SQL语句到新建查询窗口。以此类推,将三个表的创建语句都拷贝到MSSQL2008R2中,在新建查询里,看起来应...
阅读全文
摘要:一、何谓动态表单最近再做一个项目,运营只是初步确定了功能,再加上项目比较复杂,所以我不好确定数据库结构我随时有可能在某个表中加一个属性…这时候,如果我有2个页面,分别是 Create 和 Edit,那我就需要对这两个页面进行修改~如果是更多的页面怎么办?那为何不根据Model,自动生成表单呢?网上查到一篇文章,是利用外部XML文件,好吧,我承认在一定程度上能方便一点,但写XML和写Html有什么本质区别吗?二、大家想要怎么样的动态表单?最懒的方法,只要我数据库和Model有变动,别的地方我不用动一行代码,页面就会自动生成最新的表单!好理想的状态~ 其实我就是为了这个目标而做的。虽然上面的方法最
阅读全文
摘要:这部分学习的主要内容是实现登陆时的用户名及密码验证,注册信息验证。里面涉及到Strongly-Type HtmlHelper 强类型的HtmlHelper辅助方法,数据验证的方式等等。其中强类型辅助方法是通过lamda表达式引用模板中的模型来传到视图上的。下面是实现过程:1:打开vs2010->New Project->mvc2 web application ,我给solution命名为MvcValidate,添加后工程就已经创建好了。2:建立User sqlserver 数据库,表UserInfo如下:3:EF实现存储模型到概念模型的映射。右击Model文件夹 Add New
阅读全文
摘要:使用IValidatableObject实施类级别模型验证数据注释属性供了一种简单的方法来验证你的模型类中的单个属性值。有些人问道:是否EF Code First也支持在模型对象上应用类级别验证方法,只管验证规则而不需要涉及很多属性值? 答案是肯定的——你有一个很简单的方法来实现:在你的模型类中实现IValidatableObject接口。IValidatableObject.Validate()方法下面是一个在Product模型类中使用IvalidatableObject接口(包含于.NET4的System.ComponentModel.DataAnnotaions命名空间内)实现两个定制验
阅读全文
摘要:转自:http://www.cnblogs.com/jelea/archive/2013/01/06/2848309.html在项目中会有很多常用的操作方法如添加、删除、修改等,而在使用EF时虽然已是ORM,但仍然会习惯性的在业务层写大量类似方法,为此,分享一个我在项目使用的公共基类,经过多次修改,已在mssql和oracle数据库项目上使用没问题。希望对使用EF开发项目的朋友有帮助,不是说写的有多好,只是为了分享,因为我在使用EF之初也一直在找这样一个类但资源很少。 欢迎拍砖,不要伤人就行。。。以下是 Repository.cs源码 :Repository.cs 1 using Syst..
阅读全文
摘要:一是ObjectContext是一种模型优先的开发模式,DbContext是代码优先的开发模式。这是两者最根本的区别。同时两者之间可以相互转换:下面给出转换的例子1 DbContext转为ObjectContextusing System.Data.Entity.InfrastructureObjectContext context =((IObjectContextAdapter)dbContext).ObjectContext;2ObjectContext转为DbContextusing System.Data.Entity.InfrastructureDbContext context.
阅读全文
摘要:在我们的工作和学习当中,经常会遇到中小型项目,这些项目除了业务上的区别较大外,对于底层和数据访问,其实都差不多。记得以前做项目时,每次都要重复的写底层操作数据库的代码,不仅浪费时间,也无太大意思,后来接触到了Entity Framework,Linq等技术,发现底层原来可以这么简单,既缩短了大量的开发时间,又提高了代码质量。 今天就向大家演示两种搭建底层和技术,在此,也给自己做一个笔记。 CodeFirst,用中文说是代码优先,此技术可以让我们先写代码,然后由Entity Framework根据我们的代码建立数据库。一开始听上去很神奇,接下来,我将用图文并茂的方式,演示出来: 用学生的...
阅读全文
摘要:使用EF(实体框架)可以及其方便地创建和修改SQL数据库,它封装了繁琐的SQL代码,通过数据库和对象之间的映射,让程序员可以完全按照面向对象的思路使用linq语句操纵数据库中的数据。首先,在这个例子里,创建ModelStudent.edmx文件,用它建立Student表,里面有Id,Name,Age三项。去掉主键的自动增长标识,生成SQL语句,即可创建一个货真价实数据表!在ModelStudent.Designer.cs当中有一个类叫ModelStudentContainer,这个类可以看做我们的数据库,Student类则是这张表对应的类,Student对象就是表中的一行。接下来看如何进行增删
阅读全文
摘要:例1:>Model中体现1对多>DbContext两个表都已声明>Controller中使用Include("表名")即可//效果示意:例2:显示Album表字段 关联到 Genre和Artist字段
阅读全文
摘要:首先在此声明一下,我不是这方面的高手,也是一个初学者,如果文章中出现不对的地方还请诸位多多指正。进入正题。首先我们在数据库中建三个表新闻表:News分类表:Categories新闻与分类的关系表:NewsInCategories关系如下:先在数据库中预先添加几个分类:现在开始添加新闻:以下是页面代码:[html]view plaincopy@modelMvcRelationShipTest.Models.News@{ViewBag.Title="Create";}<h2>Create</h2><scriptsrc="@Url.Cont
阅读全文
1

浙公网安备 33010602011771号