SMO - 访问表属性

时间:2015-07-03 00:38:17

标签: c# smo

我不确定这是否是预期的行为,因为我无法在MSDN上的任何地方找到它,但这似乎有点奇怪。

我正在编写一个使用SMO的程序。为了测试。我基本上得到了一个测试数据库,其中有一个表(结构不重要),具有以下触发器。

CREATE TRIGGER [dbo].[MyTableInsert] ON [dbo].[MyTable] AFTER INSERT
AS
BEGIN
    PRINT 'after insert';
END

现在在我的代码中。我希望使用这段代码来查看(并证明)表格' MyTable'有一个INSERT触发器。但是,运行该代码会抛出PropertyNotSetException

var table = new Table(database, tableName.ToString());
Console.WriteLine(table.HasInsertTrigger); // Throws PropertyNotSetException

但是如果我在初始化表后调用Refresh()方法。对HasInsertTrigger的调用返回true为例外。

var table = new Table(database, tableName.ToString());
table.Refresh();
Console.WriteLine(table.HasInsertTrigger); // Returns true.

调用Refresh似乎没必要,但是它是必需的,因为我无法找到任何说明在访问任何属性之前需要调用它的文档。

1 个答案:

答案 0 :(得分:0)

我应该看到这一英里了......我正在创建表的新实例而不是访问现有的实例。