Npgsql 2.2.7不读取“;inet”;如果包含等于32的掩码,请键入数据值
本文关键字:掩码 数据 包含 读取 inet Npgsql 如果 | 更新日期: 2023-09-27 18:26:53
我有一个遗留的MFC应用程序,应该在C#上重写。MFC应用程序已从PostgreSql数据库读取数据,该数据库包含带掩码的inet类型列,例如:
233.81.116.0/32
、233.255.116.20/16
等。
在C#中,我使用了Npgsql库,当我尝试读取此inet类型列时,Npgsql抛出异常
无法将CIDR网络强制转换为"233.255.116.20/16"值的地址"。
你对阅读这些价值观有什么想法吗?
在将npgsql包升级到最新版本之前,我也遇到过同样的问题。由于我的代码在dll中,我还必须确保在升级npgsql后,使用我的dll将"System.Threading.Tasks.Extensions"包添加到项目中。
为了获得完整的ip地址(cidr和all)作为字符串,我使用了这个调用
public string GetInetValue(NpgsqlDataReader dr, string columnName, String defaultValue)
{
var returnVal = defaultValue;
try
{
returnVal = dr.IsDBNull(dr.GetOrdinal(columnName)) ? defaultValue : dr.GetFieldValue<String>(dr.GetOrdinal(columnName));
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
return returnVal;
}