C# 使用.Net SqlClient连接到SQL Azure DB,是否可以为架构中的数据类型获取DBNull对象?

C# 使用.Net SqlClient连接到SQL Azure DB,是否可以为架构中的数据类型获取DBNull对象?,c#,database,azure-sql-database,sqlclient,C#,Database,Azure Sql Database,Sqlclient,我们正在使用System.Data.SqlClient下的类连接到Azure SQL数据库。我们通过执行查询(或存储过程),然后对生成的IDataReader对象执行如下操作来处理数据类型 var schema = reader.GetSchemaTable(); for (int i = 0; i < schema.Rows.Count; i++) { Type type = (Type) schema.Rows[i]["DataType"]; // do somethi

我们正在使用
System.Data.SqlClient
下的类连接到Azure SQL数据库。我们通过执行查询(或存储过程),然后对生成的
IDataReader
对象执行如下操作来处理数据类型

var schema = reader.GetSchemaTable();
for (int i = 0; i < schema.Rows.Count; i++)
{
    Type type = (Type) schema.Rows[i]["DataType"];
    // do something for the type
}
因为我们不容易访问用户的数据库服务器,所以我们很难再现这个错误。我尝试了所有可能用于在SQLAzure中创建表的数据类型,但所有这些数据类型都可以映射到C#中的某些
类型。所以现在我非常困惑,对于SQL Azure中的哪种数据库表,对于模式表的数据类型,我会得到
System.DBNull
的对象


有什么想法吗?谢谢。

我们发现了问题。数据类型是地理(或几何体),这些是SQL CLR类型,它需要安装某些程序集(通常与SQL Server一起安装),以便代码获得其.NET运行时类型。否则,DBNull将作为数据类型返回。

我们发现了问题。数据类型是地理(或几何体),这些是SQL CLR类型,它需要安装某些程序集(通常与SQL Server一起安装),以便代码获得其.NET运行时类型。否则,DBNull将作为数据类型返回。

我们尝试了一些方法,但无法重新编程。你还看到这个问题吗?“你们有重编吗?@JanEngelsberg是的,我们已经解决了这个问题,你们可以在下面看到我的答案。我们尝试了一些方法,但无法重编。你还看到这个问题吗?“你们有证据证明吗?”@JanEngelsberg是的,我们已经解决了这个问题,你们可以在下面看到我的答案。
System.InvalidCastException
Unable to cast object of type 'System.DBNull' to type 'System.Type'.