JDi*_*ias 1 c# sql-server entity-framework .net-core
我正在 .NET Core 中开发一个控制台应用程序,用于在数据库中读/写,使用与我之前的应用程序(针对 Web,用 ASP.NET MVC 编写)相同的代码(稍作更改)。
\n\n但是,当我查询数据库时,程序(正在运行)抛出无效的强制转换异常
\n\n\n\n\nSystem.InvalidCastException:\'无法将\'Microsoft.Data.SqlClient.SqlCommand\'类型的对象强制转换为\'System.Data.SqlClient.SqlCommand\'。\'。
\n
但这些命令在我的网络应用程序中运行没有问题。
\n\n有人能帮我解决这个问题吗?
\n\n一份 .csproj文件:
\xe2\x80\xa6 \n <PropertyGroup>\n <OutputType>Exe</OutputType>\n <TargetFramework>netcoreapp2.1</TargetFramework>\n <StartupObject></StartupObject>\n </PropertyGroup>\n\xe2\x80\xa6\n <ItemGroup>\n\xe2\x80\xa6 \n <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.1" />\n <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.1" />\n <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.1" />\n <PackageReference Include="Microsoft.Windows.Compatibility" Version="2.0.0" />\n\xe2\x80\xa6 \n </ItemGroup>\nRun Code Online (Sandbox Code Playgroud)\n\n我在中配置应用程序的Main例程:Program.cs
using System;\nusing System.IO;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.SqlServer;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.DependencyInjection;\nusing Newtonsoft.Json;\nusing System.Collections.Generic;\n\xe2\x80\xa6 \n var optionsBuilder = new DbContextOptionsBuilder<fmDataContext>();\n\n optionsBuilder\n .UseSqlServer(connectionString, providerOptions => providerOptions.CommandTimeout(60));\n\n using (fmDataContext context = new fmDataContext(optionsBuilder.Options))\n\xe2\x80\xa6 \nRun Code Online (Sandbox Code Playgroud)\n\n我对数据库的查询,发生错误的地方(在我的数据上下文类中):
\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.SqlServer;\nusing System.Data;\nusing System.Data.Common;\nusing System.Data.SqlClient;\n\xe2\x80\xa6 \n DataTable dt = new DataTable();\n\n DbConnection connection = Database.GetDbConnection();//)\n using (DbCommand cmd = connection.CreateCommand())\n using (DbDataAdapter sda = new SqlDataAdapter((SqlCommand)cmd))\n {\n cmd.CommandText = sqlQuery;\n cmd.CommandType = CommandType.Text;\n connection.Open();\n rows_returned = sda.Fill(dt);\n connection.Close();\n }\nRun Code Online (Sandbox Code Playgroud)\n
在 .NET Core 3.0 中,与 SQL Server 相关的二进制文件及其数据类型已从本机命名空间移出System.Data并移至其自己的专用包中,这使得 .NET SDK 不再那么臃肿。
那些仍然需要使用的开发人员可以通过在Microsoft.Data.SqlClientSQL Server下载必要的 NuGet 包来选择加入。
参考: https ://devblogs.microsoft.com/dotnet/introducing-the-new-microsoftdatasqlclient/
| 归档时间: |
|
| 查看次数: |
5231 次 |
| 最近记录: |