我不确定这是否是预期的行为,因为我无法在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
似乎没必要,但是它是必需的,因为我无法找到任何说明在访问任何属性之前需要调用它的文档。
答案 0 :(得分:0)
我应该看到这一英里了......我正在创建表的新实例而不是访问现有的实例。