EF获取数据库表名和列名
EF获取数据库表名和列名
- /// <summary>
- /// 通过当前DBContext上下文获取对应数据库中所有得表
- /// </summary>
- /// <returns></returns>
- public List<string> GetTableNames()
- {
- var TableNames = new List<string>();
- var metadata = ((IObjectContextAdapter) this).ObjectContext.MetadataWorkspace;
- var tables = metadata.GetItemCollection(DataSpace.SSpace).GetItems<EntityContainer>().Single()
- .BaseEntitySets.OfType<EntitySet>()
- .Where(s => !s.MetadataProperties.Contains("Type") ||
- s.MetadataProperties["Type"].ToString() == "Tables");
- foreach (var table in tables)
- {
- var tableName = table.MetadataProperties.Contains("Table") &&
- table.MetadataProperties["Table"].Value != null
- ? table.MetadataProperties["Table"].Value.ToString()
- : table.Name;
- var tableSchema = table.MetadataProperties["Schema"].Value.ToString();
- TableNames.Add(tableSchema + "." + tableName);
- }
- return TableNames;
- }
- public List<string> GetColumnNamesByTable(string tableName)
- {
- string name = tableName.Split('.')[1];
- string schema = tableName.Split('.')[0];
- var ColumnNames = new List<string>();
- var metadata = ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace;
- 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);
- foreach (var member in table.ElementType.Members)
- {
- var ColumnName = member.Name;
- ColumnNames.Add(ColumnName);
- }
- return ColumnNames;
- }
EF获取数据库表名和列名的更多相关文章
- MySQL数据库表名、列名、别名区分大小写的问题
MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小写的: 3.列名与列的别名在所有的情况下均是忽略大小写的: 4 ...
- MySQL,SQLSERVER,ORACLE获取数据库表名及字段名
1.MySQL 获取表名: 用“show tables”命令.在程序中也可以采用该命令获取,在返回的RowSet中的“Tables_in_db”读出来.其中“db”是指你的数据库的名称,比如说Tabl ...
- oracle和其他数据库对表名、列名的长度限制
============== 数据库 表名列名长度限制问题 今天修改数据库表名,感觉现有的定义列名都无含义...修改后被同事告知,列名有点长,怕有的数据库不支持.. 我头一次听说数据库表名和列名长度限 ...
- C#获取Access数据库中的所有表名和列名
//C#获取Access数据库中的所有表名和列名 string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" ...
- SQL获取数据库名,表名,列名,说明等信息
由于最近工作涉及SQL语句较多,对一些不常见的SQL函数.及存储过程下面进行整理和描述,供大家分享: /************************************************ ...
- SQl查询数据库表名、表的列名、数据类型、主键
1.获取所有数据库名: 2.Select Name FROM Master..SysDatabases order by Name 3. 4.2.获取所有表名: 5. (1) ...
- [SQL]获取所有数据库名、获取数据库中表名、获取表中的字段名
--()获取所有数据库名: Select Name FROM Master..SysDatabases order by Name --()获取所有表名 --XType=''U'':表示所有用户表; ...
- EF 控制code-first生成的数据库表名的单复数
原地址:https://blog.csdn.net/winnyrain/article/details/51248410 在Code-First中,默认生成的数据库表的名称为类型的复数形式,如Mode ...
- SQL查询数据库名、表名、列名
1.获取所有用户名SELECT name FROM Sysusers where status='2' and islogin='1'islogin='1'表示帐户islogin='0'表示角色sta ...
随机推荐
- 2019 第十届蓝桥杯大赛软件类省赛 Java A组 题解
2019 第十届蓝桥杯大赛软件类省赛 Java A组 试题A 题解 题目最后一句贴心的提示选手应该使用 long (C/C++ 应该使用 long long). 本题思路很直白,两重循环.外层 ...
- Codeforces Round #664 (Div. 2) D. Boboniu Chats with Du
传送门:cf1395D 题意 给定一个长度为n的数组a[i]为当天说话的有趣值,如果a[i]>m,那么在 i 之后有d天不能说话.否则可以每天都说话.找到一个排列使得n天有趣值总和最大,问有趣值 ...
- hdu 6827 Road To The 3rd Building
题意: t组输入,每一组一个n,然后后面是n个树的值(我们放到数组v里面),你需要从[1,n]这个区间内挑选出来两个数i,j,你需要保证i<=j,之后你要求一下v[i]+v[i+1]+...+v ...
- Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) C. Bouncing Ball (后缀和,枚举)
题意:有一长度为\(n\)的平台,平台有的位置有木桩,可以使小球弹起来,小球必须从第\(p\)个位置开始,而且每次都会向右弹\(k\)个单位,然后有的位置是没有木桩的,你可以在这些的空的位置放一个木桩 ...
- 洛谷-P1469 找筷子 (位运算)
题意:给你一组数,求数组中唯一的出现次数为奇数的那个数. 题解:这题其实直接桶排一下就行了,但是最后一个点会TLE. 后来了解到这题可以用位运算来解决: ^(异或)运算符:用于比较两个二进制数 ...
- 递归实现jsonTree
using System;using System.Collections.Generic;using System.Text;using WeChatApi.Model;using System.L ...
- 深入了解typeof与instanceof的使用场景及注意事项
JavaScript中的数据类型分为两类,undefined,number,boolean,string,symbol,bigint,null[1]组成的基础类型和Object.Function.Ar ...
- boomworks 1999~2009
大众软件 PC定时执行专家 4.0 (PCTaskTimer) - 功能强大.简单易用的定时执行软件.具有功能多.体积小.消耗资源少的特点. 超级网际搜索(SuperSearch) - 免费.快速.高 ...
- 超详细 DNS 协议解析
尽人事,听天命.博主东南大学研究生在读,热爱健身和篮球,正在为两年后的秋招准备中,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 C ...
- 牛客网多校第3场 C-shuffle card 【splay伸展树】
题目链接:戳这里 转自:戳这里 关于splay入门:戳这里 题意:给n个数,进行m次操作,每次都从n个数中取出连续的数放在最前面. 解题思路:splay的区间操作. 附代码: 1 #include&l ...