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

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

8e03e778b3364909438aefff1b0d9495.png22f6172359508a4aef63e3da672a6ca1.png

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

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

43a1cd560b9ed1e994f09fa94550d043.png25cac6e559d5e104bf164ac9b0b2c910.png419a83748bf81ede912a0a7a43121523.png

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();

}

}

}

ccf57389fb933bd5f81c0ce696b4c5a4.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值