我正在维护一个大型代码库,该代码库利用了SQL Server中的数百个存储过程。要删除未使用的过程,我们需要找到仍在使用的过程。我写了一小段CQL,可以告诉我所有依赖于SqlCommand的方法。在大多数情况下,此类的使用由向导生成的 XSD 执行:
/// <Name>Stored Procedure Usage</Name>
from m in JustMyCode.Methods
// Find usage of the property setter (principally XSD generated code)
let depth0 = m.DepthOfIsUsing("System.Data.Common.DbCommand.set_CommandText(String)")
// Find usage of the constructor (principally manual code)
let depth1 = m.DepthOfIsUsing("System.Data.SqlClient.SqlCommand..ctor(String,SqlConnection)")
where (depth0 >= 0 || depth1 >= 0)
select new { m, m.ParentType, m.ParentAssembly }
过程名称是内联定义并分配给 SqlCommand.CommandText 的字符串:
this._adapter.InsertCommand.CommandText = "dbo.InsertStudentAddress";
有什么方法可以在我的select new {}
中打印出名字吗?
有什么方法可以在我选择的新 {} 中打印出名称?
不,没有办法,NDepend 代码查询 Linq 不读取字符串常量。这是我们将来可能会添加的功能。