gpt4 book ai didi

c# - Entity Framework Core 3 原始 SQL 缺少方法

转载 作者:行者123 更新时间:2023-12-02 20:58:41 25 4
gpt4 key购买 nike

我正在尝试使用 EF Core 3 删除表中的所有行,例如:

db.MyTable.ExecuteSqlRaw("delete from MyTable;");

但我收到错误:

DbSet' does not contain a definition for 'ExecuteSqlRaw' and no accessible extension method 'ExecuteSqlRaw' accepting a first argument of type 'DbSet' could be found (are you missing a using directive or an assembly reference?)

Microsoft 针对 EF Core 3 的重大更改页面没有提供任何关于是否需要特殊软件包来启用此功能的建议:

https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/breaking-changes#fromsql-executesql-and-executesqlasync-have-been-renamed

这些是我安装的 Nuget 软件包:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
<PackageReference Include="System.Linq" Version="4.3.0" />
<PackageReference Include="System.Linq.Expressions" Version="4.3.0" />
<PackageReference Include="System.Linq.Queryable" Version="4.3.0" />

使用语句:

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;

请注意,FromSqlRaw可用,但ExecuteSqlRawExecuteSqlRawAsync等不可用。

编辑:我添加了using Microsoft.EntityFrameworkCore,错误已更改为:

'DbSet' does not contain a definition for 'ExecuteSqlRaw' and the best extension method overload 'RelationalDatabaseFacadeExtensions.ExecuteSqlRaw(DatabaseFacade, string, params object[])' requires a receiver of type 'DatabaseFacade'

最佳答案

我对新错误的编辑得出了答案:

Microsoft Breaking Changes 文档只是没有提供 Execute 方法的示例。要使其正常工作,您必须改为通过“数据库”属性。简而言之,使用这些:

  1. 确保您使用 Microsoft.EntityFrameworkCore;
  2. 如果使用执行,请使用myContext.Database.ExecuteSqlRaw(@"...sql to excxute...")

关于c# - Entity Framework Core 3 原始 SQL 缺少方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58347444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com