我想从 Entity Framework Core 2.0 执行一条 SQL 命令,但我不知道该怎么做。
1.- 我需要这样做的原因是我想从数据库表中删除所有数据,并且使用 Context.remove
或 Context.removeRange
会产生对 DB 的许多调用(每个调用一个表中的数据)。
2.- 我读到有一种方法 .ExecuteSqlCommand
可以实现这一点,但我的 Context.Database 中不存在该方法(也许在 Core 2.0 中它已被删除?)。这是信息的来源: Dropping table In Entity Framework Core and UWP
所以,基本上我需要使用 EF Core 2.0 从代码中删除一个表,据我所知,我需要为此执行一个 SQL 命令。
谢谢你。
这是我的 .csproj,以防万一我遗漏了什么
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.0" PrivateAssets="All" />
</ItemGroup>
<ItemGroup>
<!--<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.1.1" /> -->
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
</ItemGroup>
</Project>
原文由 MorgoZ 发布,翻译遵循 CC BY-SA 4.0 许可协议
确保您引用
Microsoft.EntityFrameworkCore
以包含所有必要的扩展方法,这些方法允许您执行原始 SQL 命令。从我找到的源存储库中
ExecuteSqlCommand
和相关的扩展方法找到一篇建议使用 ADO.Net 的文章。
首先你从上下文中获取一个连接,创建一个命令并执行它。