我正在尝试使用 EF Core 3 来删除表中的所有行,例如:
db.MyTable.ExecuteSqlRaw("delete from MyTable;");
但是我遇到了以下错误:
DbSet' 不包含 'ExecuteSqlRaw' 的定义,且找不到接受类型为 'DbSet' 的第一个参数的可访问扩展方法 'ExecuteSqlRaw'(是否缺少 using 指令或程序集引用?)
EF Core 3 的 Microsoft Breaking Changes 页面没有提供任何关于是否需要特殊包来启用此功能的建议:
这些是我安装的 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
可用,但 ExecuteSqlRaw
、ExecuteSqlRawAsync
等不可用。
编辑:我添加了一个 using Microsoft.EntityFrameworkCore
,错误变为:
'DbSet' 不包含 'ExecuteSqlRaw' 的定义,而最佳的扩展方法重载 'RelationalDatabaseFacadeExtensions.ExecuteSqlRaw(DatabaseFacade, string, params object[])' 要求类型为 'DatabaseFacade' 的接收器