EF获取数据库表名和列名

1|0EF获取数据库表名和列名

  1.  
  2. /// <summary> 
  3. /// 通过当前DBContext上下文获取对应数据库中所有得表 
  4. /// </summary> 
  5. /// <returns></returns> 
  6. public List<string> GetTableNames() 

  7. var TableNames = new List<string>(); 
  8. var metadata = ((IObjectContextAdapter) this).ObjectContext.MetadataWorkspace; 
  9. var tables = metadata.GetItemCollection(DataSpace.SSpace).GetItems<EntityContainer>().Single() 
  10. .BaseEntitySets.OfType<EntitySet>() 
  11. .Where(s => !s.MetadataProperties.Contains("Type") || 
  12. s.MetadataProperties["Type"].ToString() == "Tables"); 
  13. foreach (var table in tables) 

  14. var tableName = table.MetadataProperties.Contains("Table") && 
  15. table.MetadataProperties["Table"].Value != null 
  16. ? table.MetadataProperties["Table"].Value.ToString() 
  17. : table.Name; 
  18. var tableSchema = table.MetadataProperties["Schema"].Value.ToString(); 
  19. TableNames.Add(tableSchema + "." + tableName); 

  20. return TableNames; 

  21. public List<string> GetColumnNamesByTable(string tableName) 

  22. string name = tableName.Split('.')[1]; 
  23. string schema = tableName.Split('.')[0]; 
  24. var ColumnNames = new List<string>(); 
  25. var metadata = ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace; 
  26. var table = metadata.GetItemCollection(DataSpace.SSpace).GetItems<EntityContainer>().Single().BaseEntitySets.OfType<EntitySet>().Where(s=>!s.MetadataProperties.Contains("Type") || s.MetadataProperties["Type"].ToString() == "Tables").FirstOrDefault(t => t.Table==name&&t.Schema==schema); 
  27.  
  28. foreach (var member in table.ElementType.Members) 

  29. var ColumnName = member.Name; 
  30. ColumnNames.Add(ColumnName); 

  31. return ColumnNames; 


__EOF__

本文作者明明.如月
本文链接https://www.cnblogs.com/mmry/p/7159148.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   明明.如月  阅读(3746)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示