从 Class 获取数据库中的 Nvarchar 长度
Get Nvarchar length in Database From Class
我 Class 在 SQL 服务器
中用作 Table
然后是下面的属性
[Column(Storage = "_new_name", DbType = "nvarchar (2000)")]
public string new_name { get { return _new_name; } set { _new_name = value; } }
所以。我可以使用 C#
从 Class 中获取长度吗
在这种情况下是 2000
感谢
如果不求助于反射,你做不到。属性是元数据,因此它们只是用各种过程所需的附加信息装饰代码。在您的情况下,您的 ORM 可以识别哪个 属性 映射到哪个列。
假设你有一个 class 这样的:
public class TestTable
{
private string _new_name;
private string _address;
[Column(Storage = "_new_name", DbType = "nvarchar (2000)")]
public string new_name {
get
{
return _new_name;
}
set
{
_new_name = value;
}
}
[Column(Storage = "_address", DbType = "nvarchar (5000)")]
public string address {
get
{
return _address;
}
set
{
_address = value;
}
}
}
您可以像这样从属性中读取属性值:
var properties = typeof(TestTable).GetProperties();
var attributesPerProperty = new Dictionary<string, string>();
foreach (var propertyInfo in properties)
{
var attribute = System.Attribute.GetCustomAttributes(propertyInfo).FirstOrDefault();
if(attribute is ColumnAttribute)
{
var columnAttribute = (ColumnAttribute)attribute;
attributesPerProperty.Add(propertyInfo.Name, columnAttribute.DbType);
}
}
这不是一个理想的做事方式,我只是给出了一个粗略的例子,但如果你真的,真的需要从你的 classes 中阅读这类信息,上面的内容会让你那里。
我 Class 在 SQL 服务器
中用作 Table然后是下面的属性
[Column(Storage = "_new_name", DbType = "nvarchar (2000)")]
public string new_name { get { return _new_name; } set { _new_name = value; } }
所以。我可以使用 C#
在这种情况下是 2000
感谢
如果不求助于反射,你做不到。属性是元数据,因此它们只是用各种过程所需的附加信息装饰代码。在您的情况下,您的 ORM 可以识别哪个 属性 映射到哪个列。
假设你有一个 class 这样的:
public class TestTable
{
private string _new_name;
private string _address;
[Column(Storage = "_new_name", DbType = "nvarchar (2000)")]
public string new_name {
get
{
return _new_name;
}
set
{
_new_name = value;
}
}
[Column(Storage = "_address", DbType = "nvarchar (5000)")]
public string address {
get
{
return _address;
}
set
{
_address = value;
}
}
}
您可以像这样从属性中读取属性值:
var properties = typeof(TestTable).GetProperties();
var attributesPerProperty = new Dictionary<string, string>();
foreach (var propertyInfo in properties)
{
var attribute = System.Attribute.GetCustomAttributes(propertyInfo).FirstOrDefault();
if(attribute is ColumnAttribute)
{
var columnAttribute = (ColumnAttribute)attribute;
attributesPerProperty.Add(propertyInfo.Name, columnAttribute.DbType);
}
}
这不是一个理想的做事方式,我只是给出了一个粗略的例子,但如果你真的,真的需要从你的 classes 中阅读这类信息,上面的内容会让你那里。