微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过表名从 dbContext 获取实体类属性名称?

如何解决如何通过表名从 dbContext 获取实体类属性名称?

我有 dbContext 和表名。 我想从代表该表的类中接收所有属性名称。重要的事情 - 类中的属性名称,导致类中的某些属性使用 Column 属性进行了更正,以使类与 db 实体保持一致。

public class MyTable
{
    public int Id { get; set;}
    public string Desc { get; set;}
    [Column("DbProp")]
    public int Classprop{ get; set;}
}

所需的输出["Id","Desc","Classprop"]

我可以从上下文元数据中获取所有表字段名称,但不知道如何使用 Column 属性“连接”它们。

public static IEnumerable<SelectListItem> GetTableColumns(DbContext context,string table)
{
    var Metadata = ((IObjectContextAdapter)context).ObjectContext.MetadataWorkspace;

    var tableType = Metadata.GetItemCollection(DataSpace.sspace)
                            .GetItems<EntityContainer>()
                            .Single()
                            .BaseEntitySets.OfType<EntitySet>()
                            .FirstOrDefault(s => (!s.MetadataProperties.Contains("Type") || (s.MetadataProperties["Type"].ToString() == "Tables"))
                                                 && string.Equals(s.Table ?? s.Name,table,StringComparison.OrdinalIgnoreCase));

    return tableType?.ElementType.Properties.Select(f => new SelectListItem
    {
        Text = f.Name,Value = f.Name
    });
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。