EF获取数据库表名和列名

新建
模板
小书匠

  1. /// <summary> 

  2. /// 通过当前DBContext上下文获取对应数据库中所有得表 

  3. /// </summary> 

  4. /// <returns></returns> 

  5. public List<string> GetTableNames() 



  6. var TableNames = new List<string>(); 

  7. var metadata = ((IObjectContextAdapter) this).ObjectContext.MetadataWorkspace; 

  8. var tables = metadata.GetItemCollection(DataSpace.SSpace).GetItems<EntityContainer>().Single() 

  9. .BaseEntitySets.OfType<EntitySet>() 

  10. .Where(s => !s.MetadataProperties.Contains("Type") || 

  11. s.MetadataProperties["Type"].ToString() == "Tables"); 

  12. foreach (var table in tables) 



  13. var tableName = table.MetadataProperties.Contains("Table") && 

  14. table.MetadataProperties["Table"].Value != null 

  15. ? table.MetadataProperties["Table"].Value.ToString() 

  16. : table.Name; 

  17. var tableSchema = table.MetadataProperties["Schema"].Value.ToString(); 

  18. TableNames.Add(tableSchema + "." + tableName); 



  19. return TableNames; 



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



  21. string name = tableName.Split('.')[1]; 

  22. string schema = tableName.Split('.')[0]; 

  23. var ColumnNames = new List<string>(); 

  24. var metadata = ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace; 

  25. 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); 


  26. foreach (var member in table.ElementType.Members) 



  27. var ColumnName = member.Name; 

  28. ColumnNames.Add(ColumnName); 



  29. return ColumnNames; 



EF获取数据库表名和列名的更多相关文章

  1. MySQL数据库表名、列名、别名区分大小写的问题

    MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小写的: 3.列名与列的别名在所有的情况下均是忽略大小写的: 4 ...

  2. MySQL,SQLSERVER,ORACLE获取数据库表名及字段名

    1.MySQL 获取表名: 用“show tables”命令.在程序中也可以采用该命令获取,在返回的RowSet中的“Tables_in_db”读出来.其中“db”是指你的数据库的名称,比如说Tabl ...

  3. oracle和其他数据库对表名、列名的长度限制

    ============== 数据库 表名列名长度限制问题 今天修改数据库表名,感觉现有的定义列名都无含义...修改后被同事告知,列名有点长,怕有的数据库不支持.. 我头一次听说数据库表名和列名长度限 ...

  4. C#获取Access数据库中的所有表名和列名

    //C#获取Access数据库中的所有表名和列名    string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" ...

  5. SQL获取数据库名,表名,列名,说明等信息

    由于最近工作涉及SQL语句较多,对一些不常见的SQL函数.及存储过程下面进行整理和描述,供大家分享: /************************************************ ...

  6. SQl查询数据库表名、表的列名、数据类型、主键

    1.获取所有数据库名:     2.Select Name FROM Master..SysDatabases order by Name   3.  4.2.获取所有表名:   5.   (1)  ...

  7. [SQL]获取所有数据库名、获取数据库中表名、获取表中的字段名

    --()获取所有数据库名: Select Name FROM Master..SysDatabases order by Name --()获取所有表名 --XType=''U'':表示所有用户表; ...

  8. EF 控制code-first生成的数据库表名的单复数

    原地址:https://blog.csdn.net/winnyrain/article/details/51248410 在Code-First中,默认生成的数据库表的名称为类型的复数形式,如Mode ...

  9. SQL查询数据库名、表名、列名

    1.获取所有用户名SELECT name FROM Sysusers where status='2' and islogin='1'islogin='1'表示帐户islogin='0'表示角色sta ...

随机推荐

  1. 2019牛客暑期多校训练营(第三场)G.Removing Stones(ST+分治)

    题意:给你n堆石子 每堆有ai个 现在问你有多少个连续的区间保证最大值小于等于该区间和的两倍 思路:我们可以考虑每个区间的分割点 总是该区间的最大值 所以我们只要ST找到该区间的最大值 然后每次都枚举 ...

  2. 灯光照射,圆形探测类问题(解题报告)<分层差分><cmath取整>

    题目描述 一个n*n的网格图上有m个探测器,每个探测器有个探测半径r,问这n*n个点中有多少个点能被探测到. 输入输出格式 输入格式: (1<=r<n<=5000) (1<=m ...

  3. C++11 Java基本数据类型以及转换

    写在前面: 母语是Java,后来学了C++11,这两个语言的基本数据类型隐式转换不太一样,有点晕,整理一下 整理自网络和书籍,标明出处 C++ 基本数据类型 --http://www.cnblogs. ...

  4. CF1466-C. Canine poetry

    CF1466-C. Canine poetry 题意: 给出一个字符串,这个字符串里面可能会包含多个回文子字符串.现在你可以任意修改这个字符串中的任意一个字符任意次数,问你最少多少操作数之后这个字符串 ...

  5. 实战交付一套dubbo微服务到k8s集群(3)之二进制安装Maven

    maven官网:https://maven.apache.org/ maven二进制下载连接:https://archive.apache.org/dist/maven/maven-3/3.6.1/b ...

  6. Excel添加超链接

    using Microsoft.Office.Interop.Excel; Worksheet sheet; public void AddLink(int row, int col, string ...

  7. canvas画布基本知识点总结

    HTML5的canvas元素使用JavaScript画图: <canvas width="600" height="400"> </canva ...

  8. ossutilmac64

    ossutilmac64 ossutil是以命令行方式管理OSS数据的工具,提供方便.简洁.丰富的存储空间(Bucket)和文件(Object)管理命令,支持Windows.Linux. Mac平台. ...

  9. flex & align-content & justify-items

    flex & align-content & justify-items align-content 多行 align-items 的对其方式 https://developer.mo ...

  10. 蓝湖 UI 设计稿上如何生成渐变色和复制渐变色

    蓝湖 UI 设计稿上如何生成渐变色和复制渐变色 Sketch 生成渐变色 不要上传图片,切图 如果是切图,切图模式下就不会生成 css 代码了 复制渐变色 OK .button { width: 28 ...