从 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 中阅读这类信息,上面的内容会让你那里。