我需要获取表的结构,在Microsoft SQL Server Management Studio中创建数据库,我发现获取结构需要命令
exec sp_columns TableName
专注于site创建了一些代码:
public class ResultSchema
{
public object TABLE_QUALIFIER { get; set; }
public object TABLE_OWNER { get; set; }
public object TABLE_NAME { get; set; }
public object COLUMN_NAME { get; set; }
public object DATA_TYPE { get; set; }
public object TYPE_NAME { get; set; }
public object PRECISION { get; set; }
public object LENGTH { get; set; }
public object SCALE { get; set; }
public object RADIX { get; set; }
public object NULLABLE { get; set; }
public object REMARKS { get; set; }
public object COLUMN_DEF { get; set; }
public object SQL_DATA_TYPE { get; set; }
public object SQL_DATETIME_SUB { get; set; }
public object CHAR_OCTET_LENGTH { get; set; }
public object ORDINAL_POSITION { get; set; }
public object IS_NULLABLE { get; set; }
public object SS_DATA_TYPE { get; set; }
}
SampleContext context = new SampleContext(@"Server=.\SQLEXPRESS;Database=ExampleDB1;Trusted_Connection=true");
var structure = context.Database.SqlQuery<ResultSchema>("EXEC sp_columns Tovars").ToList();
但结果是,我只得到空值,我做错了什么?如何获得表结构?
答案 0 :(得分:1)
EF无法实现object
,它始终需要特定的数据类型。换句话说,ResultSchema
属性的数据类型应该与存储过程返回的列匹配:
public class ResultSchema
{
public string TABLE_QUALIFIER { get; set; }
public string TABLE_OWNER { get; set; }
public string TABLE_NAME { get; set; }
public string COLUMN_NAME { get; set; }
public Int16 DATA_TYPE { get; set; }
public string TYPE_NAME { get; set; }
public int PRECISION { get; set; }
public int LENGTH { get; set; }
public Int16? SCALE { get; set; }
public Int16? RADIX { get; set; }
public Int16 NULLABLE { get; set; }
public string REMARKS { get; set; }
public string COLUMN_DEF { get; set; }
public Int16 SQL_DATA_TYPE { get; set; }
public Int16? SQL_DATETIME_SUB { get; set; }
public int? CHAR_OCTET_LENGTH { get; set; }
public int ORDINAL_POSITION { get; set; }
public string IS_NULLABLE { get; set; }
public byte? SS_DATA_TYPE { get; set; }
}