ef core 2.1 利用Query Type查询视图】的更多相关文章

ef core新加入的功能“Query Type”可以让我们很方便的查询视图而不需要做任何特殊处理.不过在代码上和普通的查询有些不同. 先贴文档:https://docs.microsoft.com/en-us/ef/core/modeling/query-types 文档中有一些很重要的地方单独提一下: 在DbContext中,普通table定义模型用的类型是DbSet,而视图用的是DbQuery //传统table public virtual DbSet<Address> Address…
背景 话说有这么一家子,老公养了一条狗,老婆养了一只猫. 数据库的设计 人表 宠物表 通过表可以知道,宠物通过Owner指向主人的Id. 问题来了,我要和故事开头一样,老公-狗,老婆-猫,对应起来,怎么查询呢? 有同学说这还不简单?两个遍历一下不就行了. 首先 取出 List<宠物>集合,再根据宠物的主人Id去查找对应的主人信息就好了. 如果这样设计,那么将会执行3次查询: l  查出所有的宠物. l  查出阿猫的主人. l  查出阿狗的主人. 数据量不大还好,数据量要是大一点这是非常影响速度…
使用EF Core时,如果多次从数据库中查询一个表的同一行数据,DbContext中跟踪(track)的实体到底有几个呢?我们下面就分情况讨论下. 数据库 首先我们的数据库中有一个Person表,其建表脚本如下: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, [Age] [int] NULL, [CreateTime] [datetime] NULL, CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED…
我们来看看下面的代码,这个代码是一个INNER JOIN的EF Core查询,其中用SubCategory表INNER JOIN了SubCategoryLanguage表,但是我们需要在SubCategoryLanguage表上只查询出其DataStatus等于1的行,所以需要用到子查询: ) .Join(dbContext.SubCategoryLanguage.Where(e => e.DataStatus == ), sc => sc.SubCategoryCode, sl =>…
参照https://blog.csdn.net/yingxiake/article/details/51016234#reply https://blog.csdn.net/choushi300/article/details/71438693 https://blog.csdn.net/zhuzhu81/article/details/77745400 1.现在实体类上定义方法已经具体查询语句 @Entity @NamedQuery(name = "Task.findByTaskName&qu…
前言 不知道大家是否和我有同样的问题: 一般在数据库的设计阶段,会制定一些默认的规则,其中有一条硬性规定就是一定不要对任何表中的数据执行delete硬删除操作,因为每条数据对我们来说都是有用的,并且是值得分析的. 所以我们一般会在每张表中加一个"是否删除IsDeleted"或者"是否有效IsValid"的字段,来标识这条数据的状态是否可用! 那么疑问来了,在写SQL或者Linq的时候我们到底是要加上这个条件还是忽略这个条件呢?答案当然是根据实际业务需求和情况来决定.…
前言 最近将RabbitMQ正式封装引入到.NET Core 2.0项目当中,之前从未接触过是个高大上的东东跟着老大学习中,其中收获不少,本打算再看看RabbitMQ有时间写写,回来后和何镇汐大哥探讨了一点关于EF和EF Core的内容,于是乎本文就出来了.EF 6.x和EF Core中的查询缓存想必大家都有耳闻或者了解,从数据库中查询出来的实体会形成快照在内存中Copy一份且被上下文跟踪,接下来我们要讲的内容就是这个,我们来看看. EF 6.x和EF Core查询缓存思考 首先我利用EF Co…
ef core提供了Global Query Filters特性来实现多租户与软删除,收集了一些实现方法. 最简单的例子时微软官方的特性解释. https://docs.microsoft.com/en-us/ef/core/querying/filters modelBuilder.Entity<Post>().HasQueryFilter(p => !p.IsDeleted); 比较全面的实现可参考: https://gunnarpeipman.com/ef-core-global-…
0 前言 本文会列举出 EF Core 关联查询的方法: 在第一.二.三节中,介绍的是 EF Core 的基本能力,在实体中配置好关系,即可使用,且其使用方式,与编程思维吻合,是本文推荐的方式. 第四节中,将介绍 Linq 语句的两种关联查询方式:分别是 lambda 方式和 query 方式. 1 概述 数据库中,表与表之间可能是有一定关联关系的,在查询数据过程中,我们经常会用到关联查询(常见的关联查询有如:inner join.left join 等). 而在程序中,使用 EF Core 写…
在用.net core进行数据库访问,需要处理一些比较复杂的查询,就不得不用原生的SQL查询了,然而EF Core 和EF6 的原生sql查询存在很大的差异. 在EF6中我们用SqlQuery和ExecuteSqlCommand进行sql语句的执行,而在EF Core中我们则使用FromSql和ExecuteSqlCommand 一.ExecuteSqlCommand(这两者没什么太大的区别) Company08Entities db = new Company08Entities(); str…
原文:https://bit.ly/2Cy3J5f 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能会去除一些本人实在不知道如何组织但又不影响理解的句子. 这篇文章是关于如何使用 EF Core 实现软删除的,即表面上删除了数据,但数据并没有被物理删除,在需要的时候你还是可以把它读取出来的.软删除有很多好处,但也有一些值得注意的问题.这篇文章会教你使用 EF Core 实现一般的软删除和复杂的级联软删除.在此过程中,我还会介绍如…
.Net 开发中操作数据库EF一直是我的首选,工作和学习也一直在使用.EF一定程度的提高了开发速度,开发人员专注业务,不用编写sql.方便的同时也产生了一直被人诟病的一个问题性能低下. EF Core + MySql的组合越来越流行,所以本文数据库使用MySql完成相关示例. 说明 由于工作中也一直使用Sql Server,所以记录这篇文章时也学习了很多MySql的内容. MySql安装,打开官网(https://dev.mysql.com/downloads/installer/)下载安装.…
前言 我们知道C#中的TimeSpan对应SQL Server数据库中的Time类型,但是如果因为特殊需求数据库存储的不是Time类型,而是作为字符串,那么我们如何在查询数据时对数据库所存储的字符串类型进行比较呢? TimeSpan类型比较 首先我们来看看正常情况下属性为TimeSpan类型进行比较的情况,给出如下实体模型. public class TestA { public int Id { get; set; } public string StrartEnd { get; set; }…
Entity Framework Core performance tuning – a worked example Last Updated: February 25, 2019 | Created: September 22, 2017 This is the first in a series of articles on performance tuning EF Core. In this article I take an example book selling site tha…
现在我们在SQL Server数据库中有Person表如下: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [CreateTime] [datetime] NULL, [UpdateTime] [datetime] NULL, CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NO…
在Entity Framework Core (EF Core)有许多新的功能,最令人期待的功能之一就是批处理语句.那么批处理语句是什么呢?批处理语句意味着它不会为每个插入/更新/删除语句发送单独的请求,它将在数据库的单次请求中批量执行多个语句.在这篇文章中,让我们看看它是如何工作的,并将结果与EF6进行比较. EF Core将一次准备多个语句,然后在单次请求中执行它们,所以能提供了更好的性能和速度.让我们看看它是如何工作的.我们将借助SQL Server Profiler来捕获实际生成和执行的…
在Entity Framework Core (EF Core)有许多新的功能,最令人期待的功能之一就是批处理语句.那么批处理语句是什么呢?批处理语句意味着它不会为每个插入/更新/删除语句发送单独的请求,它将在数据库的单次请求中批量执行多个语句.在这篇文章中,让我们看看它是如何工作的,并将结果与EF6进行比较. EF Core将一次准备多个语句,然后在单次请求中执行它们,所以能提供了更好的性能和速度.让我们看看它是如何工作的.我们将借助SQL Server Profiler来捕获实际生成和执行的…
EF Core使用SQL调用返回其他类型的查询   假设你想要 SQL 本身编写,而不使用 LINQ. 需要运行 SQL 查询中返回实体对象之外的内容. 在 EF Core 中,执行该操作的另一种方法是编写 ADO.NET 代码,并从 EF 获取数据库连接. public async Task<ActionResult> About() { List<EnrollmentDateGroup> groups = new List<EnrollmentDateGroup>(…
前言 很长一段时间没有写博客了,今天补上一篇吧,偶尔发现不太愿意写博客了,太耗费时间,不过还是在坚持当中,毕竟或许写出来的东西能帮到一些童鞋吧,接下来我们直奔主题.无论是在在EF 6.x还是EF Core中对于原始查询的APi都比较鸡肋,比如我们只想查询单个值,它们是不支持的,比如我们只想有些列,它们也是不支持的,太多太多不支持,唯一支持的是只能返回表中所有列即类中所有字段.所以大部分情况下我都是写原生SQL,原始查询都没怎么用到过,最近有对热爱EF的同行问到怎么利用SqlQuery实现动态查询…
Cookies   1.创建HttpCookies Cookie=new HttpCookies("CookieName");2.添加内容Cookie.Values.Add("UserName","ABC"); Cookie["UserName"]="ABC";3.修改内容Cookie.Values["UserName"]="CBA";4.读取内容var UserNa…
前言 前段时间写了EF core实现多租户的文章,实现了根据数据库,数据表进行多租户数据隔离. 今天开始写按照Schema分离的文章. 其实还有一种,是通过在数据表内添加一个字段做多租户的,但是这种模式我不打算讲了. 如果大家看了文章感觉完全衔接不上,可以先看看前面的系列文章: Asp.net core下利用EF core实现从数据实现多租户(1) Asp.net core下利用EF core实现从数据实现多租户(2) : 按表分离 EF core (code first) 通过自定义 Migr…
0. 前言 通过前两篇,我们创建了一个项目,并规定了一个基本的数据层访问接口.这一篇,我们将以EF Core为例演示一下数据层访问接口如何实现,以及实现中需要注意的地方. 1. 添加EF Core 先在数据层实现层引入 EF Core: cd Domain.Implements dotnet add package Microsoft.EntityFrameworkCore 当前项目以SqlLite为例,所以再添加一个SqlLite数据库驱动: dotnet add package Micros…
小故事 在开始讲这篇文章之前,我们来说一个小故事,纯素虚构(真实的存钱逻辑并非如此) 小刘发工资后,赶忙拿着现金去银行,准备把钱存起来,而与此同时,小刘的老婆刘嫂知道小刘的品性,知道他发工资的日子,也知道他喜欢一发工资就去银行存起来,担心小刘卡里存的钱太多拿去"大宝剑",于是,也去了银行,想趁着小刘把钱存进去后就把钱给取出来,省的夜长梦多. 小刘与刘嫂取得是两家不同的银行的ATM,所以两人没有碰面. 小刘插入银行卡存钱之前查询了自己的余额,ATM这样显示的: 与次同时,刘嫂也通过卡号和…
假设你想要 SQL 本身编写,而不使用 LINQ. 需要运行 SQL 查询中返回实体对象之外的内容. 在 EF Core 中,执行该操作的另一种方法是编写 ADO.NET 代码,并从 EF 获取数据库连接. public async Task<ActionResult> About() { List<EnrollmentDateGroup> groups = new List<EnrollmentDateGroup>(); var conn = _context.Dat…
问: With Entity Framework Core removing dbData.Database.SqlQuery<SomeModel> I can't find a solution to build a raw SQL Query for my full-text search query that will return the tables data and also the rank. The only method I've seen to build a raw SQ…
前言 随着互联网的的高速发展,大多数的公司由于一开始使用的传统的硬件/软件架构,导致在业务不断发展的同时,系统也逐渐地逼近传统结构的极限. 于是,系统也急需进行结构上的升级换代. 在服务端,系统的I/O是很大的瓶颈.其中数据库的I/O最容易成为限制系统效率的一环.在优化数据库I/O这一环中,可以从优化系统调用数据库效率.数据库自身效率等多方面入手. 一般情况下,通过升级数据库服务器的硬件是最容易达到的.但是服务器资源不可能无限扩大,于是从调用数据库的效率方面入手是目前主流的优化方向. 于是读写分…
前言 在上一篇文章中,我们介绍了如何根据不同的租户进行数据分离,分离的办法是一个租户一个数据库. 也提到了这种模式还是相对比较重,所以本文会介绍一种更加普遍使用的办法: 按表分离租户. 这样做的好处是什么: 在目前的to B的系统中,其实往往会有一个Master数据库,里面使用的是系统中主要的数据,各个租户的数据,往往只是对应的订单.配置.客户信息. 这就造成了,租户的数据不会有很多的种类,他的数据表的数量相对Master来说还是比较少的. 所以在单一租户数据量没有十分庞大的时候,就没有必要对单…
EF Core 高阶操作 本文之前,大家已经阅读了前面的系列文档,对其有了大概的了解 我们来看下EF Core中的一些常见高阶操作,来丰富我们业务实现,从而拥有更多的实现选择 1.EF 内存查找 what?我们的ef不是直接连接数据库吗?我们查询的主体肯定是数据库啊,哪里来的内存呢? 1.所有的数据操作都有过程,并非操作直接会响应到数据库 2.并非所有的操作都每次提交,会存在缓存收集阶段,批量提交机制 描述下业务场景,我们存在一个业务,需要存储一张表,然后还需要对存储表数据做一些关联业务处理?我…
media type(媒体类型)是css 2中的一个非常有用的属性,通过media type我们可以对不同的设备指定特定的样式,从而实现更丰富的界面.media query(媒体查询)是对media type的一种增强,是CSS 3的重要内容之一.随着移动互联网的发展,media query开始得到大家的重视. media type 让我们先了解一下media type,其实这个大家会比较熟悉一点,我们通常会用到的media type会是all 和screen,然后是print,一些网站会专门通…
今天,我将向您展示这些EF Core中一个很酷的功能,通过使用显式编译的查询,提高查询性能. 不过在介绍具体内容之前,需要说明一点,EF Core已经对表达式的编译使用了缓存:当您的代码需要重用以前执行的查询时,EF Core将使用哈希查找并从缓存中返回已编译的查询. 关于这一点,您可以查阅github上面的代码QueryCompiler.cs 不过,您可能希望直接对查询进行编译,跳过哈希的计算和缓存查找.我们可以通过在EF静态类中下面两个方法来实现: EF.CompileQuery() EF.…