Entity Framework Core 2.0 中使用LIKE 操作符
Entity Framework Core 2.0 中使用LIKE 操作符
不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址
本博文翻译自:
http://gunnarpeipman.com/2017/08/ef-core-like-operator/
Entity Framework Core 2.0 早前发布,它带来了一些新的、很酷的特性。其中一个是SQL like操作符,我们现在可以直接在代码中使用它。下面是一个简单的web应用程序,它演示了使用新的like操作符。
我们先在SQL Server 数据库中建一个简单的歌曲表。
下面是表和数据库上下文的模型。
public class Song
{
public int Id { get; set; }
public string Artist { get; set; }
public string Title { get; set; }
public string Location { get; set; }
}
public class PlaylistContext : DbContext
{
public PlaylistContext(DbContextOptions<PlaylistContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Song>()
.HasKey(e => e.Id);
base.OnModelCreating(modelBuilder);
}
public virtual DbSet<Song> Songs { get; set; }
}
我跳过配置数据库连接和在启动类中需要做的所有事情,因为网上有很多关于这些的例子。
让我们从主控制器的歌曲表中查询一些歌曲,让我们把结果写出来。看一下索引方法中的linq 查询这是使用新的like操作符的地方。
public class HomeController : Controller
{
private readonly PlaylistContext _context;
public HomeController(PlaylistContext context)
{
_context = context;
}
public IActionResult Index()
{
var query = from s in _context.Songs
where EF.Functions.Like(s.Title, "%angel%")
select s;
return View(query);
}
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
索引视图还需要进行一些更改,以打印所找到的歌曲列表。
@model IEnumerable<Song>
@{
ViewData["Title"] = "Angel songs";
}
<div class="row">
<div class="col-md-4">
<h2>Songs</h2>
<table class="table table-bordered">
<thead>
<tr>
<th>Artist</th>
<th>Title</th>
</tr>
</thead>
<tbody>
@foreach (var song in Model)
{
<tr>
<td>@song.Artist</td>
<td>@song.Title</td>
</tr>
}
</tbody>
</table>
</div>
</div>
现在让我们运行程序看看它返回什么。
下面是由Entity Framework Core 2.0生成的sql查询,如果您需要看到EF生成的SQL,请参考这篇博客Entity Framework Core 2.0 Trace Strings.
SELECT [s].[Id], [s].[Artist], [s].[Location], [s].[Title]
FROM [Songs] AS [s]
WHERE [s].[Title] LIKE N'%angel%'
这是它。like操作符好像十分有魅力,生成的SQL看起来也不错。
总结
在Entity Framework Core 2.0中使用like操作符很容易。有特殊的功能类EF.Functions。它为我们提供了同类型的运算符,但没有更多的功能。我不知道接下来会发生什么,但似乎这个类将会在以后扩展到其他的方法,这些方法可以帮助我们保持对LINQ级别的查询,避免编写直接的SQL。
欢迎转载,转载请注明翻译原文出处(本文章),原文出处(原博客地址),然后谢谢观看
如果觉得我的翻译对您有帮助,请点击推荐支持:)
Entity Framework Core 2.0 中使用LIKE 操作符的更多相关文章
- Entity Framework Core 2.0 全局查询过滤器
不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: http://gunnarpeipman.com/2017/08/ef ...
- .Net Core 2.0生态(4):Entity Framework Core 2.0 特性介绍和使用指南
前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升级EF也发展到EF6.x,Entity Framework Core是一个支持跨平台的全新版本, ...
- 【EF】Entity Framework Core 2.0 特性介绍和使用指南
阅读目录 前言 获取和使用 新特性 项目升级和核心API变化 下一步计划 遗憾的地方 回到目录 前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升 ...
- Entity Framework Core 2.0 使用代码进行自动迁移
一.前言 我们在使用EF进行开发的时候,肯定会遇到将迁移更新到生产数据库这个问题,前面写了一篇文章介绍了Entity Framework Core 2.0的入门使用,这里面介绍了使用命令生成迁移所需的 ...
- ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题.
在ASP.Net Core 2.0的项目里, 我使用Entity Framework Core 2.0 作为ORM. 有人习惯把数据库的连接字符串写在appSettings.json里面, 有的习惯写 ...
- ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0
ASP.NET 5.0 将改名为 ASP.NET Core 1.0 ASP.NET MVC 6 将改名为 ASP.NET MVC Core 1.0 Entity Framework 7.0 将 ...
- [转帖]2016年时的新闻:ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0
ASP.NET Core 1.0.ASP.NET MVC Core 1.0和Entity Framework Core 1.0 http://www.cnblogs.com/webapi/p/5673 ...
- Entity Framework Core 2.0 使用入门
一.前言 Entity Framework(后面简称EF)作为微软家的ORM,自然而然从.NET Framework延续到了.NET Core.以前我也嫌弃EF太重而不去使用它,但是EF Core(E ...
- Entity Framework Core 2.0 入门简介
不多说废话了, 直接切入正题. EF Core支持情况 EF Core的数据库Providers: 此外还即将支持CosmosDB和 Oracle. EFCore 2.0新的东西: 查询: EF.Fu ...
随机推荐
- ubuntu上安装apache2+mysql+php5-fpm(PHP5 - FastCGI Process Manager)
1: 安装mysql apt-get install mysql-server mysql-client 安装过程中会被问到设置mysql root的密码 New password for t ...
- cesium根据经纬度计算距离
var startLatitude = 36;var startLongitude = 120; var endLatitude=34; var endLongitude=121; var start ...
- Python的time和datetime模块
Python的time和datetime模块 time 常用的有time.time()和time.sleep()函数. import time print(time.time()) 149930555 ...
- ddos攻击和cc攻击的区别和防护!!
什么是DDoS攻击? DDoS攻击就是分布式的拒绝服务攻击,DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式.单一的DoS攻击一般是采用一对一方式的,随着计算机与网络技术的发展,DoS攻 ...
- InputStreamReader读取文件出现乱码
当你读取一个文本文件时,如果是在电脑记事本上面写的,然后保存.使用InputStreamReader读取出来,并且是按照他的编码格式读取出来,发现还是存在乱码,比如文本内容是“你好”,读出来显示是“? ...
- ASP.NET程序运行出现WebDev.WebServer40.exe已停止工作解决方法(netsh winsock reset)
问题描述:在开发系统时候运行程序突然报出"WebDev.WebServer40.exe已停止工作"的错误,程序调试运行,发现程序在打开数据库时候报错,也就是Connection.O ...
- Vue.js安装
环境 操作系统:window7 虚拟机:centos7 vue.js: 2.8 安装nodejs 参考我得文章: http://blog.csdn.net/u013066244/article/det ...
- POI通过模板导出EXCEL文件
一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中 ...
- DataGuard开启延时应用的测试
DataGuard开启延时应用的测试 实验环境:RHEL 6.5 + Oracle 11.2.0.4 GI.DB + Primary RAC(2 nodes)+ Standby RAC(2 nodes ...
- 1.怎样控制div中的图片居中
答案如下: #div{ width: 100%; height: 100%; border: 1px solid #000; text-align: center;}#div img{ vertica ...