SQL Server Management Studio中有一个很有意思的工具,可以查看某个对象的依赖和被依赖关系。如下图所示

假设,我们自己的程序也要实现这样的功能,那么该怎么做呢?

1. 首先,创建一个项目,添加以下三个引用

2. 用如下代码测试

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.SqlServer.Management.Smo;

namespace DiscovDepedency

{

class Program

{

///

/// 这个程序演示了如何发现数据库对象的依赖关系

/// 作者:陈希章

///

///

static void Main(string[] args)

{

Server svr = new Server("localhost");

Database db = svr.Databases["Northwind"];

Table tb = db.Tables["Orders"];

DependencyWalker walker = new DependencyWalker(svr);//这是检测关系的一个工具

//检测依赖该对象的所有其他对象

Console.WriteLine("依赖Orders表的所有对象");

DependencyTree tree = walker.DiscoverDependencies(new[] { tb }, DependencyType.Children);

foreach (var item in walker.WalkDependencies(tree))

{

var xpath = item.Urn.XPathExpression;

var type = item.Urn.Type;

Console.WriteLine("\tType:{0},Name:{1}", type, string.Format("{0}.{1}",xpath.GetAttribute("Schema",type),xpath.GetAttribute("Name",type)));

}

Console.WriteLine("Orders表所依赖的其他对象");

DependencyTree tree2 = walker.DiscoverDependencies(new[] { tb }, DependencyType.Parents);

foreach (var item in walker.WalkDependencies(tree2))

{

var xpath = item.Urn.XPathExpression;

var type = item.Urn.Type;

Console.WriteLine("\tType:{0},Name:{1}", type, string.Format("{0}.{1}", xpath.GetAttribute("Schema", type), xpath.GetAttribute("Name", type)));

}

Console.Read();

}

}

}

mysql数据依赖关系_发现数据库对象的依赖关系相关推荐

  1. 数据库中表的依赖关系

    数据库中表的依赖关系 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:Visual Studio 作者:李继金 撰写时间:2019年6月 ...

  2. MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器

    第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...

  3. MySQL优化(三):优化数据库对象

    二.优化数据库对象 1.优化表的数据类型 应用设计的时候需要考虑字段的长度留有一定的冗余,但不推荐很多字段都留有大量的冗余,这样既浪费磁盘空间,也在应用操作时浪费物理内存. 在MySQL中,可以使用函 ...

  4. rds mysql 是什么_云数据库RDS是什么

    关系型数据库(RDS)是一种稳定可靠.可弹性伸缩的在线数据库服务.具有多重安全防护措施和完善的性能监控体系,并提供专业的数据库备份.恢复及优化方案,使您能专注于应用开发和业务发展. 关系型数据库(Re ...

  5. 违反mysql三范式_违反数据库第三范式引发的一个问题

    数据库第三范式的定义,是这样的: A table is in a third normal form when the following conditions are met - It is in ...

  6. java类与对象的关系_类与对象的关系是什么

    类与对象的关系是:类和对象之间是抽象与具体的关系.类是一个模板,是对一类事物的抽象描述:对象用于表示现实中该事物的个体.类是在对象之上的抽象,对象则是类的具体化,是类的实例. 类与对象有什么关系? 类 ...

  7. java中友元类_友元类成员的依赖关系|循环依赖

    定义一个CBottle类,另一个类CCarton的某个成员对CBottle进行操作,因此在CBottle类中赋予CCarton成员的友元权利.我们很容易写出如下代码: //CBottle类的头文件 b ...

  8. 无法定位软件包_使用Degraph管理软件包依赖关系

    无法定位软件包 软件开发领域的很大一部分是使系统的复杂性尽可能地低. 但是复杂性到底是什么? 尽管确切的语义有很大不同,但具体取决于您询问的人,但大多数人可能都认为这与系统中部件的数量及其交互有很大关 ...

  9. 简述机器指令与微指令之间的关系_技术动态 | 跨句多元关系抽取

    第一部分 概述 关系抽取简介 关系抽取是从自由文本中获取实体间所具有的语义关系.这种语义关系常以三元组 <E1,R,E2> 的形式表达,其中,E1 和E2 表示实体,R 表示实体间所具有的 ...

最新文章

  1. 「每天一道面试题」下面的代码有问题吗?为什么?
  2. char varchar nvarchar区别
  3. [BUUCTF]pwn - wustctf2020_easyfast (Use After Free)
  4. 轻量级锁的加锁和解锁逻辑
  5. VS2010 + OpenCV 2.4.1 环境配置
  6. 常量池在堆还是方法区_第九章_方法区
  7. linux tar order
  8. cnpm不是内部或外部命令 cnpm: command not found 解决方案 cnpm
  9. CLR via C# 读书笔记 5-5 预留大内存
  10. 一张图看懂华为2019年年报
  11. 电脑访问不了虚拟机ftp服务器,解决win环境下访问本机虚拟机中centos7 ftp服务器的问题...
  12. Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题
  13. Atitit 图像处理 opencv使用蒙版mask抠图 切割 attilax总结
  14. 【Python】模拟登陆并抓取拉勾网信息(selenium+phantomjs)
  15. 博客园:CSS HTML
  16. 影响因子,计算机科学,影响因子最高计算机科学期刊(前50种).doc
  17. Oracle分区表索引
  18. python清除变量方法
  19. torch-fidelity 简便计算FID,ISC,KID,PPL
  20. nginx 极简教程

热门文章

  1. 二极管7种应用电路详解之五
  2. 二极管7种应用电路详解之二
  3. python将txt文件多行合并为一行并将中间的空格去掉
  4. 2019/5/12 查漏补缺
  5. 又一款4800像素手机曝光:vivo V15 Pro
  6. python之multiprocessing创建进程
  7. 物联网设计四大独特挑战的解决方案
  8. s:property 获取 ValueStack中的值
  9. 乡巴佬GHOST WIN7 SP1 旗舰版32位
  10. wayos利用easyradius实现WEB认证页面的记住密码及到期提醒功能