原文:http://www.cnblogs.com/dudu/archive/2012/04/01/enitity_framework_func.html 使用 Entity Framework 最要小心的性能杀手就是 —— 不正确的查询代码造成的数据库全表查询. 我们就遇到了一次,请看下面的示例代码: //错误的代码 Func<QuestionFeed, bool> predicate = null; if (type == 1) { predicate = f => f.FeedID…
1. 创建VS工程 2.添加新项, 选中ADO.Net Entity Data Model模板 3.填入Host及数据库名字, 如果没有此数据库, 会提示创建 4.添加edmx后, 右击选择属性,配置相关属性, 如下: 5.双击edmx文件, 在空白面板上右击, 选择添加entity 6.右击创建的entity, 选择添加scalar 或者 complex property 7. 右击空白面板, 选择Generate Database from Model... 8.此时会创建xxxxxx.ed…
今天将一个迁移至 ASP.NET Core 的项目放到一台 Linux 服务器上试运行.站点启动后,浏览器打开一个页面一直处于等待状态.接着奇怪的事情发生了,整个 Linux 服务器响应缓慢,ssh命令行输入都一顿一顿的,过了一会,直接停止响应,down机了,必须强制重启服务器才行.再启动站点,再访问,问题依旧.换一台服务器,down机依然. 排查时在日志中发现了这样的报警: warn: Microsoft.EntityFrameworkCore.Query.Internal.SqlServer…
最近一个项目,使用微软的Entity Framework的ORM框架的项目,部署到现场后,出现了系统缓慢,多个客户端的内存溢出崩溃的问题. 打开了SQL Server Profiler(SQL Server Profiler的简单使用)排查,发现有全表查询的语句,这表中有上万条数据,所以客户端查询后内存溢出了. 从代码中排查是否有直接全表查询的语句,结果未找到,后来在网上搜索到Linq to Object 连接(join) Linq to Entity时可能会引起全表查询.(https://ww…
.NET Core 迁移工作如火如荼,今天在使用 Entity Frameowork Core(又名EF Core)时写了下面这样的 LINQ 查询表达式: .Where(u => u.Id == new Guid(userId)).FirstOrDefaultAsync(); 结果在 SQL Server Profiler 中发现竟然进行了全表查询. 之后将 new Guid(userId) 从表达式中移出,保存于一个局部变量中,使用这个局部变量进行查询,全表查询问题就解决了. var use…
Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE DATABASE|SCHEMA [IF NOT EXISTS] 'DB_NAME'; CHARACTER SET 'character set name’COLLATE 'collate name' 修改数据库: ALTER DATABASE DB_NAME character set utf8; 删除…
Vc数据库编程基础MySql数据库的表查询功能 一丶简介 不管是任何数据库.都会有查询功能.而且是很重要的功能.上一讲知识简单的讲解了表的查询所有. 那么这次我们需要掌握的则是. 1.使用select 语句查询所有的字段跟指定的字段. 2.按照条件查询.使用运算符以及不同的关键字进行查询. 3.为表跟字段起别名 4.聚合函数的使用. 5.设置字段为主键. 也就是自动增长. 二丶.使用select 语句查询所有的字段跟指定的字段. 1.简单查询.以及需要了解的知识 查询所有命令:  select…
获取Sqlite 1.可以用NuGet程序包来获取,它也会自动下载EF6 2.在Sqlite官网上下载对应的版本:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 注意这里面每个.net framework都有两个版本,一个带有bundle字眼,一个没有.一个安装的DLL里面包含SQLite.Interop.dll,而另一个没有.如果你运行代码的时候报 “无法加载SQLite.Interop.dll”的错误…
获取Sqlite 1.可以用NuGet程序包来获取,它也会自动下载EF6 2.在Sqlite官网上下载对应的版本:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 注意这里面每个.net framework都有两个版本,一个带有bundle字眼,一个没有.一个安装的DLL里面包含SQLite.Interop.dll,而另一个没有.如果你运行代码的时候报 “无法加载SQLite.Interop.dll”的错误…
Entity Framework 4.1支持代码优先(code first)编程模式:即可以先创建模型类,然后通过配置在EF4.1下动态生成数据库. 下面演示两种情形: 1.代码优先模式下,asp.net mvc数据访问 2.传统模式,先创建数据库和表,配置连接字符串,再生成模型 第一种情况的步骤: (1)使用空模板,创建ASP.NET MVC3.0(或4.0)项目,假定项目名:MVC_Student 注意:创建完项目后,项目会自动引用EF4.1 (2)在Model文件夹下,创建数据库上下文类:…
在应用中使用 SQLite 数据库来存储数据是相当常见的.在 UWP 平台中要使用 SQLite,一般会使用 SQLite for Universal Windows Platform 和 SQLite PCL 之类的库,前者是 SQLite 引擎库,而后者则提供了用于操作数据库的 API ,不过自从 Windows Fall Creators Update 之后,我们有了新的选择. 由于 UWP 在其 Windows Fall Creators Update SDK 中增加对 .NET Sta…
在开发环境中,每次我们对要对数据库进行更改,比如增加修改表字段等.改好Entity类后,我们只需在Nuget程序包管理控制台运行 update-database 脚本却可: update-database Entity Framework提供的这个Migration功能非常方便,基本上不用再打开Sql Server Management Studio了.那么如何在发布环境(服务器)中同步我们对数据库的修改呢? 一种方法是在运行 update-database 脚本加上 -verbose 或 -s…
在上篇随笔中,我们发现Entity Framework在构建SQL语句时,将ToTable("CNBlogsTex.dbo.blog_PostBody")中的"CNBlogsTex.dbo.blog_PostBody"转换为"[CNBlogsText.dbo].[blog_PostBody]",从而造成不能进行跨数据库查询. 今天上午,我们通过Reflector对Entity Framework的代码进行分析,找出了真相. 真相如下: 1. 对于…
By default, the Entity Framework will assume that all of the names of your tables in your database are either pluralised(复数形式的), or in the case of code first, you would like them to be pluralised when created. E.g. you have a table called "Product&qu…
使用EF6连接SQL2012生成的Edmx,分页时生成的查询语句使用了SQL 2012引入的新特性  OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY,结果在生产环境使用的数据库是SQL Server 2008 R2的,它不支持改特性. 在MSDN上找到一段know Issues: Targeting the Correct SQL Server Version   The Entity Framework targets the Transact-SQL query…
一.迁移说明 ABP模板项目Entity Framework Core默认使用的是Sql Server,也很容易将数据库迁移到MySQL,步骤如下. 二.迁移MySQL步骤 1. 下载项目 请到 http://aspnetboilerplate.com/Templates 下载一个新的项目,选择ASP.NET Core 2.x标签,Target Framework:选中.Net Core就可以了. 2. 移除默认SQL Server相关包 在EntityFrameworkCore项目下移除包Mi…
1.所查询的表的条件列没有索引: 2.需要返回所有的行: 3.对索引主列有条件限制,但是使用了函数,则Oracle 使用全表扫描,如: where  upper(city)=’TOKYO’; 这样的语句不会使用索引方法.所以就只能全表扫描. 4.带有 is null 和is not null 及 != 等子句.如: . . . where  city is  null ; . . . where city is  not  null; . . . where  city != ‘TOKYO’;…
Entity Framework是微软出品的高级ORM框架,大多数.NET开发者对这个ORM框架应该不会陌生.本文主要罗列在.NET(ASP.NET/WINFORM)应用程序开发中使用Entity Framework直接执行SQL语句或者存储过程的一些代码片段.具体请见以下正文: 1.使用SqlQuery在已知的实体上执行SQL查询语句 using (var context = new MyDBContext()) { var posts = context.Posts.SqlQuery("SE…
一.介绍 首先说一下,我们写项目一般都会建一个数据库,那数据库里面是不是存了好多张表啊,不可能把所有的数据都放到一张表里面,肯定要分表来存数据,这样节省空间,数据的组织结构更清晰,解耦和程度更高,但是这些表本质上是不是还是一个整体啊,是一个项目所有的数据,那既然分表存了,就要涉及到多个表连接查询了,比如说员工信息一张表,部门信息一张表,那如果我想让你帮我查一下技术部门有哪些员工的姓名,你怎么办,单独找员工表能实现吗,不能,单独找部门表也无法实现,因为部门表里面没有员工的信息,对不对,所以就涉及到…
SQL查询的基本原理:两种情况介绍. 第一.   单表查询:依据WHERE条件过滤表中的记录,形成中间表(这个中间表对用户是不可见的):然后依据SELECT的选择列选择对应的列进行返回终于结果. 第二.   两表连接查询:对两表求积(笛卡尔积)并用ON条件和连接连接类型进行过滤形成中间表:然后依据WHERE条件过滤中间表的记录,并依据SELECT指定的列返回查询结果. 第三.   多表连接查询:先对第一个和第二个表依照两表连接做查询,然后用查询结果和第三个表做连接查询,以此类推,直到全部的表都连…
工作中很多时候都会遇到需要将两个不同的表空间甚至数据库的表进行联合查询或者建立视图的情况. 不同的表空间查询我们可以通过在将要查询的表前面加上 表空间的对应的用户名来实现,如有两个表空间分别对应两个用户,一个是sa一个是ckq: create or replace view saAndckqUsers as select * from sa.users union select * from ckq.users; 当然,这需要有足够的权限. 那么oracle数据库中如何实现不同的数据库之间的视图…
今天给大家分享的是关于数据库的单表查询,像单表查询/多表查询/分组查询/子查询,这些方法的使用在实际项目过程中会经常用到,作为一名合格的测试人员如果不会数据库那肯定是不行的,行走江湖可能随时会面临被侮辱的可能性,哈哈,开个小玩笑.那么今天呢,我们就来看一下数据当中的单表查询的一些使用技巧,方便大家在实际的工作中灵活应用.好了,废话不多说,开始搞起! 先给大家分享一下在数据的表中插入数据.修改数据.删除数据 我们在上一篇的学习中给大家分享了如何在数据库中创建表,我们创建了一个classinfo表和…
昨日回顾 表与表之间建关系 一对多 换位思考 图书与出版社 先站在左表: 考虑左表的多条数据能否对应右表的一条数据 翻译:多本书能否被一个出版社出版 可以! 注意:单站在一张得出的表关系并不能明确两张表之间真正关系!!! 再站在右表: 考虑右表的多条数据能否对应左表的一条数据 翻译:多个出版社能否出版一本书 不可以! 通常一对多的外键字段建立在多的那一方 外键约束: 1.必须先创建被关联表 2.插入数据的时候必选先插入被关联表 3.新增同步更新同步删除功能 create table publis…
1.单表查询语法 #查询数据的本质:mysql会到你本地的硬盘上找到对应的文件,然后打开文件,按照你的查询条件来找出你需要的数据.下面是完整的一个单表查询的语法 select * from,这个select * 指的是要查询所有字段的数据. SELECT distinct 字段1,字段2... FROM 库名.表名 #from后面是说从库的某个表中去找数据,mysql会去找到这个库对应的文件夹下去找到你表名对应的那个数据文件,找不到就直接报错了,找到了就继续后面的操作 WHERE 条件 #从表中…
本节重点: 单表查询 语法: 一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二.关键字的执行优先级(重点) 重点中的重点:关键字的执行优先级 from where group by having select distinct order by limit 1.找到表:from 2.拿着where指定的约束条件,去文件/表中取出一条条记录 3.将取出的…
新版EF,系统实现过程中如果对Model进行更改,队形修改数据库并不能正常运行项目,需要借助Code First 手动迁移数据库 首先启用迁移,允许迁移Context Tools->Library Package Manager->Package Manager Console 运行 Enable-Migrations 执行命令在项目中创建Migrations 文件夹 ,包含两个类 Configuration 类:给定迁移的相关配置 InitialCreate 类:继承迁移基类,实现Up和Do…
看见过几篇其他大神写的关于EFCore2.0的文章.本人有点小白,一开始看文档的时候除了一些基本操作外其他部分几乎没有读懂,我估计会有一部分人跟我一样,因为人家读懂了的早就懂了. 在这里我写一下我自己的理解和观点,并基于EF6的机制做一些比较.理解可能比较表象,如果有错误希望大神们指正. 一.迁移指令 从EF6的经验来讲,建立完基类,接口,表和一堆服务后我们,在模型初始化方法里添加迁移模式的配置然后,直接在控制台执行Enable-Migrations就可以了. 但是在EFCore2.0中我执行启…
这次的Demo如标题所示, 首先第一步EF创建数据库 创建两个类,一个是图书类,一个是图书类别的类 using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; namespace WebApplication2.DAL { public class Book { [Key] public int B…
重写OnModelCreating,控制生成表名的单复数 public class MYDbContext : DbContext { public DbSet<User> Users { get; set; } public TYDbContext() : base("name=MYEntities") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { //按model的名…
1.启动迁移 Enable Migrations Enable-Migrations -MigrationsDirectory "MigrationsOne" -ContextTypeName "MyFirstDb" MigrationsOne:自定义的migrations文件夹的名字; MyFirstDb:你的DbContext的名字; 2.添加迁移 Add-Migrations Add-Migration -ConfigurationTypeName "…