Cannont 将类型“Microsoft.Data.SqlClient.SqlConnection”隐式转换为“System.Data.SqlClient.SqlConnection”

Cannont implicitly convert type 'Microsoft.Data.SqlClient.SqlConnection' to 'System.Data.SqlClient.SqlConnection'

提问人:db_at_systems 提问时间:6/27/2022 更新时间:6/27/2022 访问量:464

问:

我在 Visual Studio 2017 项目中有一个数据集 (.xsd) 文件,并且我向它添加了对“Microsoft.Data.SqlClient”的引用。在TableAdapter的构造函数中,我有一行代码:

this._connection = new SqlConnection();

我收到错误Cannont隐式转换类型“Microsoft.Data.SqlClient.SqlConnection”到“System.Data.SqlClient.SqlConnection”

我看了看.Designer.cs 文件,并注意到所有内容都使用 System.Data.SqlClient 命名空间。

前任。private global::System.Data.SqlClient.SqlConnection _connection;

据我所知,这个命名空间即将淘汰,并将 Microsoft.Data.SqlClient 命名空间用于新项目。

有没有办法让Visual Studio在设计器文件中使用Microsoft.Data.SqlClient,或者我是否坚持使用旧的System.Data.SqlClient?

我也读过不要编辑.设计器文件,因为 VS 会自动生成此代码,并将覆盖我添加到其中的任何内容。因此,我不想手动更改所有 System.Data.SqlClient 调用,只需让 Visual Studio 擦除它并导致一堆错误。

C# 可视化工作室 2017 System.Data.SqlClient

评论

4赞 Jeroen Mostert 6/27/2022
真正要淘汰(或应该淘汰)的是数据集。如今,类型化数据访问有更有效的解决方案,无论是 EF 还是 Dapper。
0赞 Dai 6/27/2022
“有没有办法让Visual Studio在设计器文件中使用Microsoft.Data.SqlClient,或者我是否坚持使用旧的System.Data.SqlClient?” - 可能不是。自 VS2005 以来,VS 中的 XML XSD 设计器代码没有发生重大变化(甚至 VS2003?
0赞 Dai 6/27/2022
@JeroenMostert并且对于运行时定义的数据(例如直接执行用户定义的 SQL)仍然是必不可少的——尽管我同意用例和方法有限——它们生成的语句都是 RBAW 操作——在这种情况下,从 TVP 手动生成更容易。DataSetDataTableDbDataAdapterFillUPDATEMERGE
0赞 Jeroen Mostert 6/27/2022
@Dai:是的,我特别说的是 VS 在事物之上生成的类型化访问层。在某些情况下,即使在数据库工具之外也有其用途,尽管它仍然不太有用,如果有可能确定架构,两者都不应该是首选解决方案。DataTableDataSet
2赞 Jeroen Mostert 6/27/2022
EF 是 Entity Framework,Dapper 是 Dapper。两者都是用于执行对象关系映射(ORM)的库,ORM是将关系数据转换为对象并返回对象的问题。EF 是“大”,Dapper 是“小”。当然,它们不是唯一的库,但可以说是 .NET 中最受欢迎的库。类型化数据集也试图解决这个问题,但在某种程度上,在性能和抽象方面或多或少地结合了两个世界的最坏因素,并且该功能没有得到积极的维护。

答: 暂无答案