场景 1:
我有一个返回行/列的 SQL Server 存储过程。然后在 SP Designer (SPD) 中创建一个外部内容类型 (ECT) 并推送到 Central Admin (CA)。在 CA 中,我分配权限。在该站点上,我创建了一个外部列表 (EL) 并可以查看我的数据。都好。
我在程序中将列名从“供应商名称”更改为“供应商”。现在我进入 SPD 以更改 ECT,有时它无法打开,出现错误:
“无法访问 BDC 服务应用程序业务数据连接服务。完整的异常文本是:Xml 类型“xdt 列表:untypedAtomic”不支持从 Clr 类型“Guid”到 Clr 类型“字符串”的转换。”
我没有看到这与我的更改有什么关系。撤消我对程序的更改并没有解决它。我不得不删除 ECT 和 ET 并重新创建它们。然而,它有时会再次发生。
情景 2
在测试它是否再次发生时,我发现它有时没有。我有不同的问题。
在 proc 中重命名字段后,我进入 SPD 并成功打开 ECT 并进行更改,将其推送到 CA。在 CA 中,我发现所有权限都已被删除。这是个问题。为什么会这样?如何避免?
所以我重做权限,然后转到发生两个不同“子”问题的站点。
情景 2 A
外部列表已损坏,无法查看或更新以显示新列名。我必须删除列表并重新创建它。这显然会杀死任何视图并将其从它所在的每个页面中删除,等等,或任何引用它的东西。这是一场噩梦。如何避免这种情况?我想到了一种方法,导致......
情景 2 B
我没有创建外部列表,而是编辑了一个网页,添加了一个业务数据列表 (BDL) Web 部件并将我的 ECT 添加到其中。一切都很好。然后我故意再次重命名 proc 中的一列,打开 SPD 并且(这一次)能够打开 ECT,更新字段名称。我推到CA。所有权限都被删除(叹气)。我重新添加了它们。然后我用我的 BDL 访问了我的网页,但该网页已损坏。我编辑了 Web 部件并能够对其进行更新,以便数据出现在屏幕上。
但是,旧的“供应商名称”字段丢失了(毫不奇怪,因为我已将其重命名)。但是新的“供应商”字段也不见了。在 BDL Web 部件中,我编辑了视图,令我惊讶的是,没有一个字段出现在可以添加到视图的字段列表中。在 SPD 中,我打开了 ECT 以验证新字段是否存在(确实存在)。将 ECT 推送到 CA、重做权限和编辑 BDL 都不会导致出现新字段。然后,最后,不知何故,新字段出现在屏幕上,而我从未将其添加到 BDL 视图中 - 缓存问题?
问题
所以现在我有两个问题:1.你能使用外部列表并避免上述问题吗?2. 为什么每次更新 ECT 时权限都会消失,如何防止?
谢谢。