.NetCore如何实现SQLAdapter./DataTable函数我有一个简单的.NetFramework例程,它运行一个查询并返回一个DataTable对象。我需要将其移植到.NetCore,但我推断不支持SQLAdapter和DataTableSqlConnectioncon=newSqlConnection(m_ConnectString);SqlCommandcmd=newSqlCommand(strQuery);SqlDataAdaptersda=newSqlDataAdapter();//将事务和连接分配给命令对象cmd.Connection=con;sda.SelectCommand=cmd;DataTabledt=newDataTable();//执行查询并吸收结果sda.Fill(dt);返回数据;谁能建议我如何用支持的东西重新实现这段代码?谢谢现在支持SqlDBAdapter和DataTable。您必须使用VS2017Preview15.3,目标.netcore2.0,并为System.Data.Common和System.Data.SqlClient添加NuGet包。代码如下所示。有关详细信息,请参阅https://blogs.msdn.microsoft.com/devfish/2017/05/15/exploring-datatable-and-sqldbadapter-in-asp-net-core-2-0/。publicstaticDataTableExecuteDataTable(SqlConnectionconn,CommandTypecmdType,stringcmdText,SqlParameter[]cmdParms){DataTabledt=newDataTable();dt.Columns.Add("CustomerID");dt.Columns.Add("CustomerName");SqlDataReaderdr=ExecuteReader(conn,cmdType,cmdText,cmdParms);while(dr.Read()){dt.Rows.Add(dr[0],dr[1]);}返回dt;}publicstaticDataTableExecuteDataTableSqlDA(SqlConnectionconn,CommandTypecmdType,stringcmdText,SqlParameter[]cmdParms){System.Data.DataTabledt=newDataTable();System.Data.SqlClient.SqlDataAdapterda=newSqlDataAdapter(cmdText,conn);da.Fill(dt);返回数据;更新:这个答案对应于.NETCore1.x(这是我写这篇文章时的最新版本)。如果您使用的是.NETCore2.x(截至2017年7月的测试版),请查看Joe的回答。原答案:推荐阅读:.NETCore移植我引用:YoucanuseSqlDataReaderbutnotSqlAdapterorDataTable。首先添加System.Data.SqlClientNuGet包。然后你可以...varcon=newSqlConnection("...");varcmd=con.CreateCommand();cmd.CommandText="...";varreader=cmd.ExecuteReader();//填充您的自定义数据结构IList>适合您吗?varresults=newList>();while(reader.Read()){results.Add(Enumerable.Range(0,reader.FieldCount).ToDictionary(reader.GetName,reader.GetValue));}返回结果;所以现在您可以阅读results[0]["FirstName"].ToString()这对于本教程来说很方便,除非您想切换到EntityFrameworkCore。您可以使用现有的.NETCoreDAL库之一来代替DataAdapter/DataTable,后者通过低级ADO.NET接口支持CRUD操作。最近我发布了NReco.Data:一个独立于提供者的DAL,支持自动生成SQL语句、抽象查询和简单的记录CRUD操作。例如,问题中的片段可以重新实现如下:varcon=newSqlConnection(m_ConnectString);vardbFactory=newNReco.Data.DbFactory(System.Data.SqlClient.SqlClientFactory.Instance);vardbCmdBuilder=新的NReco。Data.DbCommandBuilder(dbFactory);vardbAdapter=newNReco.Data.DbDataAdapter(con,dbCmdBuilder);varselectRecordsList=dbAdapter.Select(newQuery("some_table")).ToList>();复杂的SQL查询可以作为应用程序级数据视图执行:dbCmdBuilder.Views["some_view"]=newDbDataView(@"SELECT@columnsFROMEmployeeempLEFTJOINCompanycON(c.Id=emp.CompanyId)@where[WHERE{0}]@orderby[ORDERBY{0}]"){FieldMapping=newDictionary(){{"Id","emp.Id"},{"*","emp.*,c.Title作为CompanyTitle"}}};varsomeViewRS=dbAdapter.Select(newQuery("some_view")).ToRecordSet();NReco.Data不会尝试用自己的查询替换SQL(就像LINQ那样);相反,它允许您独立于数据库创建简单的查询,并使用可以像只读表一样访问的特殊应用程序级数据视图封装复杂的SQL语法。也可以使用Select方法重载,直接指定原始SQL查询(如EFCore中的FromSql):以上是C#学习教程:.NetCore如何实现SQLAdapter./DataTable函数分享所有内容,如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——varuserModels=dbAdapter.Select("select*fromuserswhereid={0}",5).ToList();本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
