2014-12-02 73 views
1

当通过C#代码遍历Dacpac时,我能够找出计算列中引用哪些列(GetReferenced(Microsoft.SqlServer.Dac.Model.Column.ExpressionDependencies)),以及该列的表达式是什么(Microsoft.SqlServer.Dac.Model.Column.Expression属性)。我无法找到的是计算列的数据类型。获取来自dacpac的计算列的数据类型

除此之外,我也找不到一种方法来检索FileTable表的列(虽然这是一组静态的列)。

搜索引擎不会给我带来很多;在这个主题上找不到那么多资源。

回答

2

我在这里的博客上如何得到列的数据类型:

http://sqlserverfunctions.wordpress.com/category/dacfx-2/

我还没有尝试过计算列。

要获取文件表的列,请关注博客,但用FileTable.Columns ModelRelationshipClass替换Table.Columns ModelRelationshipClass。

Ed

+0

嗨,Ed,我已经找到你的博客,并发现它非常有用作为我的第一步的指导。然而,这个问题中描述的问题没有被你的博客回答。此外,如果我使用您的工具“dacpac资源管理器”,我无法获得计算列的类型。它正确显示表达式,但对于Type来说,它指向被引用的列。引用的列数据类型不总是等于计算列的数据类型。 – 2014-12-03 00:18:28

+0

感谢关于FileTable的提示,不小心使用了Table而不是FileTable。 – 2014-12-03 00:37:23

+0

很酷,它看起来像一个计算列的数据类型实际上并不存在于sql中 - 如果您查看model.xml中没有类型说明符。 我不确定这是否是一个DacFx api的bug,但是如果你在ssms中找到一个表并将它编写出来 - 它没有它,所以sql在运行时编译它时必须对它进行评估。 – 2014-12-03 07:21:37