如何解决如何通过表名从 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 举报,一经查实,本站将立刻删除。