gpt4 book ai didi

c# - 获取存储过程结果的 .NET 架构

转载 作者:太空狗 更新时间:2023-10-29 17:45:29 25 4
gpt4 key购买 nike

我在 T-SQL 中有几个存储过程,其中每个存储过程都有一个固定的结果集架构。

我需要将每个过程的结果集映射到一个 POCO 对象,并且需要结果集中每个列的列名和类型。有没有快速访问信息的方法?

目前我发现的最佳方法是从 .NET 访问每个存储过程并在 IDataReader/IDataRecord 上编写我自己的扩展方法以转储信息(列名和类型)。

例如,执行以下查询的存储过程:

SELECT Id, IntField, NullableIntField, VarcharField, DateField FROM SomeTable

需要我有映射信息:

Id - Guid
IntField - System.Int32
NullableIntField - Nullable<System.Int32>
VarcharField - String
DateField - DateTime

最佳答案

我认为您应该能够使用 SqlDataReader.GetSchemaTable 方法来访问架构。

可以在此处找到更多信息。

http://support.microsoft.com/kb/310107

以上来源的例子

SqlConnection cn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
DataTable schemaTable;
SqlDataReader myReader;

//Open a connection to the SQL Server Northwind database.
cn.ConnectionString = "Data Source=server;User ID=login;
Password=password;Initial Catalog=DB";
cn.Open();

//Retrieve records from the Employees table into a DataReader.
cmd.Connection = cn;
cmd.CommandText = "SELECT Id, IntField, NullableIntField, VarcharField, DateField FROM SomeTable";

myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo);

//Retrieve column schema into a DataTable.
schemaTable = myReader.GetSchemaTable();

//For each field in the table...
foreach (DataRow myField in schemaTable.Rows){
//For each property of the field...
foreach (DataColumn myProperty in schemaTable.Columns) {
//Display the field name and value.
Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
}
Console.WriteLine();

//Pause.
Console.ReadLine();
}

//Always close the DataReader and connection.
myReader.Close();
cn.Close();

关于c# - 获取存储过程结果的 .NET 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2744194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com