【发布时间】:2015-07-03 00:38:16
【问题描述】:
我不确定这是否是预期行为,因为我在 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 似乎没有必要,但这是必需的,因为我找不到任何说明在访问任何属性之前需要调用它的文档。
【问题讨论】: