使用 ORMLite 和 C# 从模型中检索 属性 的别名

Retrieving alias of a property from a Model with ORMLite and C#

我有以下 class:

[Schema("dbo")]
[Alias("accesses")]
public class Acces{
    [Alias("id")]
    public int Id { get; set; }

    [Alias("device_id")]
    public string DeviceId { get; set; }

    [Alias("client_id")]
    public int ClientId { get; set; }

    [Alias("person_uid")]
    public string PersonUid { get; set; }

}

如何以编程方式检索 PersonUidORMLite Alias

我尝试使用 typeof(Access).GetModelMetadata()(也将其丢弃),但没有成功...

我在我的项目中为此做了一个助手。希望这对您有所帮助!

public static class OrmLiteExtensions
{
    public static string GetQuotedName<T>(string propertyName, bool appendTablePrefix = true)
    {
        var sqlFieldName = string.Empty;
        var modelDefinition = typeof(T).GetModelMetadata();
        if (appendTablePrefix)
            sqlFieldName = OrmLiteConfig.DialectProvider.GetQuotedName(modelDefinition.ModelName) + ".";
        sqlFieldName += modelDefinition.FieldDefinitions.First(p => p.Name == propertyName).GetQuotedName(OrmLiteConfig.DialectProvider);
        return sqlFieldName;
    }
}

用法:

OrmLiteExtensions.GetQuotedName<Acces>(nameof(Acces.DeviceId), false); // pass true in second parameter to prefix with table name