首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SqlQuery不是EF ()中的定义

SqlQuery不是EF ()中的定义
EN

Stack Overflow用户
提问于 2021-10-14 23:28:25
回答 1查看 387关注 0票数 1

我对使用EF非常陌生,所以我可能有一些误解,但我能检查一下为什么SqlQuery不是Dbset()的适当方法吗?

下面是我的代码片段,以展示我是如何设置DbContext

模型

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class CSVFile
{
    [Key]
    public int RecordId { get; set; } = 0;

    public double CO2 { get; set; } = 0.0;
    public double ambTemp { get; set; } = 0.0;
    public double relativeHumidity { get; set; } = 0.0;
}

Db上下文

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class CSVProxyDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        var connectionString = string.Format(@"Data Source=name;Initial Catalog=CSVProxyDb;Integrated Security=True;MultipleActiveResultSets=True");
        options.UseSqlServer(connectionString);
    }

    public DbSet<CSVFileProxy> CSVFileProxys { get; set; }
}

Startup.cs

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<CSVProxyDbContext>();
            services.AddControllersWithViews();
            services.AddScoped<ICSVService, CSVService>();
            services.AddRazorPages();
        }

控制器片段

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class CSVController : Controller
{
    ICSVService _csvService = null;
    List<CSVFile> _records = new List<CSVFile>();

    List<CSVFileProxy> _proxyRecords = new List<CSVFileProxy>();
    private readonly CSVProxyDbContext _proxydb;

    public CSVController(ICSVService csvService, CSVProxyDbContext proxydb)
    {
        _csvService = csvService;
        _proxydb = proxydb;
    }

    public JsonResult DeleteCSVProxy(List<CSVFileProxy> proxyRecords)
    {
        _proxydb.CSVFileProxys.RemoveRange(_proxydb.CSVFileProxys);              
        _proxydb.CSVFileProxys.SqlQuery("DBCC CHECKIDENT('CSVProxyDbContextConnection', RESEED, 0)");                                                          
        _proxydb.SaveChanges();                      
        return Json(null);
    }
}

每当调用[Key] RecordId时,我都试图在Db中重置DeleteCSVProxy()的计数,但是由于EF由于某些原因不承认SqlQuery(),所以我不太确定该如何处理。

错误:

误差CS1061

'DbSet‘不包含'ExecuteSqlCommand’的定义,也找不到接受'DbSet‘类型的第一个参数的可访问扩展方法'ExecuteSqlCommand’(您缺少使用指令还是程序集引用?)?

EN

回答 1

Stack Overflow用户

发布于 2021-10-19 01:59:43

使用SqlQuery --看上去您正在遵循EF6 (或者EF5,与EFCore5混淆)的教程,并试图将其建议应用于EFCore5;它们是完全不同的动物

EF Core 5版本将类似于

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
_proxydb.CSVFileProxys.ExecuteSqlRaw($"DBCC CHECKIDENT('CSVProxyDbContextConnection', RESEED, 0)"); 

或者如果你使用的是一些参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
_proxydb.CSVFileProxys.ExecuteSqlInterpolated($"DBCC CHECKIDENT('{someParam}', RESEED, {anotherParam})");  

:如果您传递嵌入参数的内插字符串,则使用ExecuteSqlInterpolated;EFCore会将其分离并将{..}转换为适当的ExecuteSqlInterpolated参数。ExecuteRaw将不会这样做,C#将形成string,并且它不会被参数化。这是非常糟糕的

在早期(预-3) EF版本中,您只有一种方法ExecuteSql,它遇到了一些问题;如果您不将SQL格式str直接放入打开注入攻击的方法中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//acceptable
_proxydb.CSVFileProxys.ExecuteSql($"DBCC CHECKIDENT('{someParam}', RESEED, {anotherParam})");

//not good
var sql = $"DBCC CHECKIDENT('{someParam}', RESEED, {anotherParam})";
_proxydb.CSVFileProxys.ExecuteSql(sql);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69581265

复制
相关文章
NHibernate 使用 SqlQuery
多数情况下, NHibernate 提供的 HQL、 Linq 以及条件查询足够用了, 但是在某些情况下, 需要使用 SqlQuery, 使用 SqlQuery 可以查询标量(简单类型), 查询单表实体类, 关联表查询。
beginor
2020/08/10
5800
Hibernate里使用SQLQuery
最近在做一个老旧项目,项目后台使用了hibernate。以前虽说也用过hibernate,但用得不够深入,一般最多两个表关联查询一下,比较简单。 但今天在项目有一个需求,要求5个表进行关联查询,这样hibernate试了很久,发现还是搞不定。于是尝试在hibernate里直接使用SQL。在这个地方遇到了坑,卡了很久。最终解决了问题,这里记录一下。 Hibernate里使用SQL StringBuilder sql = new StringBuilder(); //这里开始拼装sql语句 //创建SQLQue
jeremyxu
2018/05/10
9560
EF实体中的修改
思路:先从ObjectContext取出实体,然后将前台传过来的DTO属性对应赋值到我们的实体上,然后调用ObjectContext的保证修改方法。
跟着阿笨一起玩NET
2018/09/19
1.1K0
Ef core中,定义实体类间的关系与它与表的映射形式!
反思: 我认为价格商表是从表,它应该有一个Book的导航属性就对了, 但是作者是反其道而行之。 在从类里写一个外键属性!
申君健
2019/08/14
1.5K0
Ef core中,定义实体类间的关系与它与表的映射形式!
使用EF操作Docker中的MySQL实例
为啥我会选择MySQL呢?因为我的服务器配置较低,而SqlServer在docker中的实例,服务器的运行内存应当保持在2G+,我没有这个条件,它会爆出这样的错误 sqlservr: This program requires a machine with at least 2000 megabytes of memory. 听我朋友说就算你的机器是2G的,也会报这个错误,看了好多网上破解的很是不友好,害怕出更多的问题,所以自然就选择了MySql,(SqlServer吃配置还是很高的)...  
星哥玩云
2022/08/18
7850
使用EF操作Docker中的MySQL实例
ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-EF执行SQL语句与存储过程
这一节,我们来看看EF如何执行SQL语句与读取存储过程的数据,可能有一部分人,还不知道EF如何执行存储过程与原生SQL语句! 我们什么时候要直接使用原生的SQL语句? 返回值过于复杂 过于复杂的联合查询,可能连了好几张表 报表自定义SQL语句(自定义报表居多) 使用EF,但是写了一条性能很差的LINQ 批量操作 所以实际开发中,我往往两合一处理 EF上下文 DbContext包含了DataBase属性,里面有很多方法,但是实际我们只需要用到个方法      ExecuteSqlCommand 和 Sql
用户1149182
2018/03/27
1.2K0
ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-EF执行SQL语句与存储过程
sqlmap中文手册pdf_sqlquery工具
Sqlmap是十分著名的、自动化的SQL注入工具。为了较为系统地学习Sqlmap,我决定翻译一遍Sqlmap的用户手册,于是便有了此文。由于我英语学得很差,所以翻译地不好。基本上是意译,还加入了我自己的东西,和原文有较大差距。
全栈程序员站长
2022/11/01
5.7K0
sqlmap中文手册pdf_sqlquery工具
ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-EF执行SQL语句与存储过程
EF上下文 DbContext包含了DataBase属性,里面有很多方法,但是实际我们只需要用到个方法
用户1149182
2018/12/07
1K0
ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-EF执行SQL语句与存储过程
EF上下文 DbContext包含了DataBase属性,里面有很多方法,但是实际我们只需要用到个方法
用户1149182
2018/07/31
8180
ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-EF执行SQL语句与存储过程
[.net]EF中重建数据库
做了一个.net MVC的练习,使用了EF,手动修改了Modal中的数据的类型,需要重新生成数据库。
东风压倒西风
2022/12/08
5040
EF Linq中的左连接Left Join查询
linq中的join是inner join内连接,就是当两个表中有一个表对应的数据没有的时候那个关联就不成立。
跟着阿笨一起玩NET
2020/08/10
5K0
在EF中,如何实现模糊查询?
【摘要】我们知道在sql中,可以通过like方法实现模糊查询。而在EF中,我们通常使用Lambda表达式实现各种复杂的数据查询,那么,类似于sql的like方法如何实现呢?
高一峰
2020/09/22
4.4K0
在EF中,如何实现模糊查询?
EF中Repository模式应用场景
   在DDD领域构架系统中,为了将领域模型从领域逻辑层中和数据映射层之间解耦出来,我们引用到了Repository模式,属于属于泛型编程中一个比较常用的模式,尤其应用到MVC构架中更为常见,我们来简单的介绍几个概念:
跟着阿笨一起玩NET
2018/09/19
1.1K0
EF中Repository模式应用场景
EF简介
EF:EF是 asp.net的一套ORM框架. ORM: 广义上:ORM指的是面向对象的模型和关系型数据库的数据库之间的相互转换; 狭义上:ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟
郑小超.
2018/01/24
1.4K0
EF简介
EFCore3.1+编写自定义的EF.Functions扩展方法
虽然EF.Functions 提供了很多数据库函数,但是并不全面.比如加密解密..
GuZhenYin
2021/04/16
7690
EFCore3.1+编写自定义的EF.Functions扩展方法
EF Core中的多对多映射如何实现?
EF 6.X中的多对多映射是直接使用HasMany-HasMany来做的。但是到了EF Core中,不再直接支持这种方式了,可以是可以使用,但是不推荐,具体使用可以参考《你必须掌握的EntityFramework 6.X与Core 2.0》一文。在这里我就详细的说下如何在EF core下实现。 首先就是实体类的建立:
Ryan_OVO
2023/10/19
3560
EF相关
1、监听EF执行sql的方式 db.Database.Log += c => Console.WriteLine($"sql:{c}"); SQL Server Profiler public JDDbContext() : base("name=JDDbContext") { this.Database.Log += c => Console.WriteLine($"sql:{c}"); } 2、查看EF对象上下文监听对象的
指尖改变世界
2019/06/02
5340
EF原理
实体框架(Entity Framework)简称EF,是微软以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方案。是ADO.NET中的一组支持开发面向数据的软件应用程序的技术。是微软的一个ORM框架。
全栈程序员站长
2022/08/09
7800
EF原理
使用HSB而不是RGB来定义颜色
有多种方法可以在代码中定义颜色。最常用的方法是指定三种基色的值 - 红色、绿色和蓝色 (RGB)。本文通过指定色调、饱和度和亮度 (HSB) 的值来探索替代机制的使用。可以以更直观的方式使用 HSB 属性来创建颜色搭配良好的调色板。
韦弦zhy
2023/01/06
2.7K0
使用HSB而不是RGB来定义颜色
java中数组怎么定义_java中数组的定义
type 为Java中的任意数据类62616964757a686964616fe58685e5aeb931333365646364型,包括基本类型和组合类型,arrayName为数组名,必须是一个合法的标识符,[ ] 指明该变量是一个数组类型变量。/**
全栈程序员站长
2022/09/08
4.8K0

相似问题

EF SqlQuery多映射

14

具有参数集的EF SqlQuery

13

EF 4.1 - DBContext SqlQuery和Include

20

使用MVC实现EF中的SqlQuery返回-1

12

使用context.Database.SqlQuery的EF

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文