Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用linq到sql dbml,如何获得数据类型的大小?像varchar(50),如何得到50?_Vb.net_Linq To Sql - Fatal编程技术网

Vb.net 使用linq到sql dbml,如何获得数据类型的大小?像varchar(50),如何得到50?

Vb.net 使用linq到sql dbml,如何获得数据类型的大小?像varchar(50),如何得到50?,vb.net,linq-to-sql,Vb.net,Linq To Sql,使用linq到sqldbml文件,如何获得数据类型的大小 例如,varchar50,如何获得50 谢谢您可以从与属性关联的ColumnAttribute中获取字符串ex:NVarChar30 var prop = typeof(User).GetProperty("FirstName"); var attr = (ColumnAttribute)prop.GetCustomAttributes(typeof(ColumnAttribute), false)[0]; string dbType =

使用linq到sqldbml文件,如何获得数据类型的大小

例如,varchar50,如何获得50


谢谢

您可以从与属性关联的ColumnAttribute中获取字符串ex:NVarChar30

var prop = typeof(User).GetProperty("FirstName");
var attr = (ColumnAttribute)prop.GetCustomAttributes(typeof(ColumnAttribute), false)[0];
string dbType = attr.DbType;
int index = dbType.IndexOf("(") + 1;
int width = int.Parse(dbType.Substring(index, dbType.IndexOf(")") - index));

你也可以这样做

    String databaseType = 
        *DataContextInstance*.Mapping.MappingSource
        .GetModel(typeof(*DataContext*))
        .GetMetaType(typeof(*Entity*))
        .DataMembers.First(x => x.Name.Equals("ColumnName"))
        .DbType;
希望这有助于: