SMO - 访问 table 属性时出现 PropertyNotSetException
SMO - PropertyNotSetException when accessing table properties
我不确定这是否是预期的行为,因为我在 MSDN 上的任何地方都找不到它的记录,但这看起来还是有点奇怪。
我正在编写一个使用 SMO 的程序。为了测试。我基本上有一个测试数据库,里面有一个 table(结构不重要),它有以下触发器。
CREATE TRIGGER [dbo].[MyTableInsert] ON [dbo].[MyTable] AFTER INSERT
AS
BEGIN
PRINT 'after insert';
END
现在在我的代码中。我希望使用此代码来查看(并证明)table 'MyTable' 具有 INSERT 触发器。但是 运行 该代码抛出 PropertyNotSetException
.
var table = new Table(database, tableName.ToString());
Console.WriteLine(table.HasInsertTrigger); // Throws PropertyNotSetException
但是如果我在初始化 table 之后调用 Refresh()
方法。调用 HasInsertTrigger
returns 例外。
var table = new Table(database, tableName.ToString());
table.Refresh();
Console.WriteLine(table.HasInsertTrigger); // Returns true.
调用 Refresh
似乎没有必要,但这是必需的吗,因为我找不到任何说明在访问任何属性之前需要调用它的文档。
我应该在一英里外看到这个...我正在创建表的新实例而不是访问现有的实例。
我不确定这是否是预期的行为,因为我在 MSDN 上的任何地方都找不到它的记录,但这看起来还是有点奇怪。
我正在编写一个使用 SMO 的程序。为了测试。我基本上有一个测试数据库,里面有一个 table(结构不重要),它有以下触发器。
CREATE TRIGGER [dbo].[MyTableInsert] ON [dbo].[MyTable] AFTER INSERT
AS
BEGIN
PRINT 'after insert';
END
现在在我的代码中。我希望使用此代码来查看(并证明)table 'MyTable' 具有 INSERT 触发器。但是 运行 该代码抛出 PropertyNotSetException
.
var table = new Table(database, tableName.ToString());
Console.WriteLine(table.HasInsertTrigger); // Throws PropertyNotSetException
但是如果我在初始化 table 之后调用 Refresh()
方法。调用 HasInsertTrigger
returns 例外。
var table = new Table(database, tableName.ToString());
table.Refresh();
Console.WriteLine(table.HasInsertTrigger); // Returns true.
调用 Refresh
似乎没有必要,但这是必需的吗,因为我找不到任何说明在访问任何属性之前需要调用它的文档。
我应该在一英里外看到这个...我正在创建表的新实例而不是访问现有的实例。