下面是我的类定义,用于从mssql和mysql获取列详细信息:
public class Columns
{
public string Name { get; set; }
public string Datatype { get; set; }
public string IsNullable { get; set; }
public Int32? character_maximum_length { get; set; }
public byte? NumericPrecision { get; set; }
public Int32? NumericScale { get; set; }
}
基于documentation我选择 Int32 ?,字节?和int32表示character_maximum_length,数字位置和数字刻度属性。
现在,当我填写列详细信息时,这适用于mssql:
cols = con.GetSchema("Columns", columnRestrictions).AsEnumerable()
.Select
(
col => new Columns
{
Name = col[3].ToString(),//name of column
Datatype = col.Field<string>("DATA_TYPE"),
IsNullable = col.Field<string>("is_nullable"),
character_maximum_length = col.Field<Int32?>("character_maximum_length"),
NumericPrecision = col.Field<byte?>("NUMERIC_PRECISION"),
NumericScale = col.Field<Int32?>("NUMERIC_SCALE")
}).ToList();
我在mysql的情况下使用相同的类填充列详细信息但在下面的行中出现错误:指定的强制转换无效
character_maximum_length = (Int32?) col[8] // in case of mysql
没有文档说明在mysql的情况下character_maximum_length,数字位置和数字刻度的数据类型是什么。
我检查了character_maximum_length的数据类型,如下所示:
但我想保持我的列类对于mysql和mssql 都相同。
那么我该如何解决这个问题?