随笔分类 -  EntityFramework

摘要:using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Text; using System.Data.Entity.Infrastructure.Interc 阅读全文
posted @ 2019-09-17 15:46 libingql 阅读(605) 评论(0) 推荐(1) 编辑
摘要:1. 预先生成视图 通过代码的方式来预先生成视图,要求EntityFramework是6.0及以上版本。 控制台程序: MVC程序: 2. NGen优化 参考:Entity Framework Improving Startup Performance with NGen (EF6 Onwards) 阅读全文
posted @ 2018-05-19 20:40 libingql 阅读(965) 评论(0) 推荐(0) 编辑
摘要:1. 禁用延迟加载 延迟加载是常见的方式,Entity Framework在需要时可以自动为一个实体的实例获取关联的数据。 Entity Framework自动延迟加载需要同时满足以下3个条件: (1)DbContext.Configuration.LazyLoadingEnabled = true 阅读全文
posted @ 2018-05-19 16:17 libingql 阅读(924) 评论(0) 推荐(0) 编辑
摘要:1.SQL Server查询中WITH(NOLOCK) SELECT语句中加上WITH(NOLOCK)为解决阻塞死锁。 处理数据库死锁异常查询的一种方式是使用NOLOCK 或 READPAST。 ◊ NOLOCK:可能显示没有提交事务的数据 ◊ READPAST:不显示被事务锁住数据 1.1 没有提 阅读全文
posted @ 2018-05-17 20:56 libingql 阅读(539) 评论(0) 推荐(0) 编辑
摘要:1. IEnumerable IEnumerable :对于在内存中集合上运行的方法,返回的可枚举对象将捕获传递到方法的参数。在枚举该对象时,将使用查询运算符的逻辑,并返回查询结果。 IEnumerable在.Net2.0引入。 IEnumberable使用的是LINQ to Object方式... 阅读全文
posted @ 2015-07-25 23:57 libingql 阅读(2542) 评论(2) 推荐(1) 编辑
摘要:Entity Framework 6提供支持存储过程的新特性,本文具体演示Entity Framework 6 Code First的存储过程操作。Code First的插入/修改/删除存储过程 默认情况下下,Code First配置对全部实体的插入/修改/删除操作均直接针对表进行。从EF6开... 阅读全文
posted @ 2014-03-17 22:05 libingql 阅读(7664) 评论(1) 推荐(3) 编辑
摘要:Entity Framework Code First通过DbContext.ChangeTracker对实体对象的变动进行跟踪,实现跟踪的方式有两种:变动跟踪快照和变动跟踪代理。 变动跟踪快照:前面几篇随笔的示例都是通过实体对象变动快照跟踪来实现数据操作的,POCO模型不包含任何逻辑去通知Entity Framework实体类属性的变动。Entity Framework在第一次对象加载到内存中时进行一次快照,添加快照发生在返回一次查询或添加一个对象到DbSet中时。当Entity Framework需要知道对象的变动时,将先把当前实体与快照中的对象进行扫描对比。实现扫描对比的方法是调用... 阅读全文
posted @ 2013-10-26 21:32 libingql 阅读(8404) 评论(0) 推荐(5) 编辑
摘要:1、添加外键关联实体 1>、添加新的Province及City实体using (var ctx = new PortalContext()){ var city1 = new City { CityNo = "10010", CityName = "测试城市1" }; var city2 = new City { CityNo = "10020", CityName = "测试城市2" }; var province = new Province { ProvinceNo... 阅读全文
posted @ 2013-10-26 00:10 libingql 阅读(9716) 评论(1) 推荐(1) 编辑
摘要:对于一个单独实体的通常操作有3种:添加新的实体、修改实体以及删除实体。 1、添加新的实体 Entity Framework Code First添加新的实体通过调用DbSet.Add()方法来实现。using (var ctx = new PortalContext()){ var province = new Province { ProvinceNo = "100000", ProvinceName = "测试" }; ctx.Provinces.Add(province); ctx.SaveChanges();} 代码运... 阅读全文
posted @ 2013-10-25 19:58 libingql 阅读(6178) 评论(0) 推荐(1) 编辑
摘要:在项目过程中,两个实体数据之间在往往并非完全独立的,而是存在一定的关联关系,如一对一、一对多及多对多等关联。存在关联关系的实体,经常根据一个实体的实例来查询获取与之关联的另外实体的实例。 Entity Framework常用处理数据关联加载的方式有3种:延迟加载(Lazy Loading)、贪婪加载(Eager Loading)以及显示加载(Explicit Loading)。 1、延迟加载(Lazy Loading) 延迟加载是项目应用中常见的方式,Entity Framework在需要时可以自动为一个实体的实例获取关联的数据。 Entity Framework自动延迟加载需要满... 阅读全文
posted @ 2013-10-21 22:44 libingql 阅读(7416) 评论(3) 推荐(10) 编辑
摘要:DbContext、DbSet及DbQuery是Entity Framework Code First引入的3个新的类,其中DbContext用于保持数据库会话连接,实体变化跟踪及保存,DbSet用于暂存实体类的变化跟踪,DbQuery用于提供查询跟你。 1、使用Set查询全部记录 使用DbContext查询首先需要保证DbContext的实例在使用完之后对资源的释放,释放DbContext实例资源的方法有两种:采用using代码块结构和调用DbContext实例的Dispose()方法。using (var ctx = new PortalContext()){ foreach... 阅读全文
posted @ 2013-10-16 21:56 libingql 阅读(12377) 评论(0) 推荐(6) 编辑
摘要:1、Entity Framework Code First查询视图 Entity Framework Code First目前还没有特别针对View操作的方法,但对于可更新的视图,可以采用与Table一样的方式进行插入、修改、删除及查询。在实际的项目过程中,视图多只用于进行查询。 Entity Framework Code First查询视图示例: 使用到的表及视图结构如下: 文件类VCity.cs:using System;using System.Collections.Generic;namespace Portal.Models{ public class VCity ... 阅读全文
posted @ 2013-10-12 20:41 libingql 阅读(18881) 评论(5) 推荐(8) 编辑
摘要:本篇随笔目录: 1、外键列名默认约定 2、一对多关系 3、一对一关系 4、多对多关系 5、一对多自反关系 6、多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的。两个不同表之间可以存在外键依赖关系,一个表自身也可以有自反关系(表中的一个字段引用主键,从而也是外键字段)。 Entity Framework Code First默认多重关系的一些约定规则: 一对多关系:两个类中分别包含一个引用和一个集合属性,也可以是一个类包含另一个类的引用属性,或一个类包含另一个类的集合属性。如在本篇接下来用到的例子Category类和Product类,要使... 阅读全文
posted @ 2013-10-05 23:37 libingql 阅读(35127) 评论(15) 推荐(38) 编辑
摘要:Entity Framework Code First与数据表之间的映射方式有两种实现:Data Annotation和Fluent API。本文中采用创建Product类为例来说明tity Framework Code First属性映射约定的具体方式。1. 表名及所有者 在默认约定的情况下... 阅读全文
posted @ 2013-10-05 00:27 libingql 阅读(31724) 评论(7) 推荐(22) 编辑
摘要:1. 安装Entity Framework 使用NuGet安装Entity Framework程序包:工具->库程序包管理器->程序包管理器控制台,执行以下语句:PM> Install-Package EntityFramework2. Entity Framework数据库连接配置 安装了En... 阅读全文
posted @ 2013-10-04 10:07 libingql 阅读(23618) 评论(3) 推荐(20) 编辑
摘要:Entity Framework Code First学习系列说明:开发环境为Visual Studio 2010 + Entity Framework 5.0+MS SQL Server 2012,在数据库方面Entity Framework Code First在Entity Framework 阅读全文
posted @ 2013-10-03 01:18 libingql 编辑
摘要:在Visual Studio 2010安装了EF Power Tools Beta 3之后,希望根据本地现有数据库模型来生成基于Entity Framework Code First的代码时,经常出现提示参数不正确,如下图所示: 对于“异常来自 HRESULT:0x80070057 (E_INVALIDARG)”,有方法说“删除 C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET files这个文件夹”,只是删除掉该文件夹之后,再次尝试生成代码时仍然会报出上面的错误。 这里提供的解决方法: 在“连接属性”中,... 阅读全文
posted @ 2013-09-25 00:20 libingql 阅读(6141) 评论(12) 推荐(5) 编辑
摘要:1、EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework。 在程序包管理器控制台中执行以下语句,安装EntityFramework。PM> Install-Package EntityFramework 安装成功后,界面提示如下图: 在新建的Portal控制台应用程序中添加两个实体类,代码结构如下: 其中,类文件PortalContext.cs的代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Te.. 阅读全文
posted @ 2013-09-20 23:06 libingql 阅读(95866) 评论(22) 推荐(67) 编辑
摘要:1、EF Code First一对一关联关系 项目结构图: 实体类: Account.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Northwind.App.Entities{ public class Account { /// <summary> /// 账户ID /// </summary> public int AccountID { get; set; } /// <... 阅读全文
posted @ 2013-01-31 21:18 libingql 阅读(34412) 评论(9) 推荐(2) 编辑
摘要:1、创建项目及下载Entity Framework 创建项目如下: 项目中安装Entity Framework:2、数据库连接、实体类及映射文件配置 数据库连接配置文件:App.config<?xml version="1.0" encoding="utf-8"?><configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fw 阅读全文
posted @ 2013-01-29 20:16 libingql 阅读(11124) 评论(1) 推荐(3) 编辑