我在SQL服务器中使用Class作为表
然后是下面的属性
[Column(Storage = "_new_name", DbType = "nvarchar (2000)")]
public string new_name { get { return _new_name; } set { _new_name = value; } }
因此。我可以使用C#
在这种情况下,它是2000年
感谢
答案 0 :(得分:1)
如果不诉诸反思,你就不能轻易。属性是元数据,因此它们仅使用各种进程所需的附加信息来装饰代码。在您的情况下,您的ORM可以识别哪个属性映射到哪个列。
假设您有这样的课程:
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);
}
}
这不是一种理想的做事方式,我刚刚给出了一个粗略的例子,但如果你真的需要从你的课堂上阅读这类信息,那么上面的内容就会帮助你。