如何解决获取实体列的名称
我正在创建一个使用 asp.net core 3.1 和实体框架 6 的网站
[Table("CORPSDEMETIER")]
public partial class CorpsDeMetier : BaseClass
{
[Column("CODE_CORPS_DE_METIER")]
[StringLength(5)]
public string CodeCorpsDeMetier { get; set; }
[Column("LIBELLE_CORPS_DE_METIER")]
[StringLength(50)]
public string LibelleCorpsDeMetier { get; set; }
public IList<EntrepriseCorpsdemetier> EntrepriseCorpsdemetiers { get; set; }
public IList<ProjetEntrepriseCorpsDeMetier> ProjetEntreprisesCorpsDeMetier { get; set; }
}
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID( 'CORPSDEMETIER' )
但是当我认为我可以在代码中获取它时,我不想再询问数据库一次。
在这种情况下,我想得到“LIBELLE_CORPS_DE_METIER”
CorpsDeMetier item = new CorpsDeMetier();
string name = item.LibelleCorpsDeMetier. ......;
对不起,我的英语很糟糕,希望你能理解我。 感谢阅读。
解决方法
您可以使用反射并读取 ColumnAttribute
名称。
public static class ObjExtenstions
{
public static string GetColumnName(this object obj,string name)
{
string result = name;
var property = obj.GetType().GetProperties().FirstOrDefault(x => x.Name.Equals(name));
if (property != null)
{
var columnAttribute = (ColumnAttribute)property.GetCustomAttributes(true).FirstOrDefault(x => x.GetType() == typeof(ColumnAttribute));
result = columnAttribute?.Name;
}
return result;
}
}
用法(如果未使用 ColumnAttribute 则返回属性名称):
var name = item.GetColumnName(nameof(CorpsDeMetier.LibelleCorpsDeMetier));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。