0

场景 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 时权限都会消失,如何防止?

谢谢。

4

1 回答 1

-1

对于场景 1:Sharepoint 不适合使用“GUID”数据类型。在将更改提交到您的 ECT 之前,将面包屑导航回 ECT 的一个级别(如果您“退得太远”并且可能会丢失您的更改,sharepoint 会提醒您)并检查 sharepoint 分配给每个字段的数据类型,如果您注意任何 GUID 数据类型,您可能必须在视图/进程中手动强制它们为 varchar 并关闭/重新打开 ECT。

场景 2:这可能是时间问题,我以前也遇到过。发生的事情是你在设计器中创建了你的 ECT 并保存了它,然后去 CA 设置权限。如果你没有理由重新更新你的 ECT,你会一切都好。但问题是您需要在设置权限后进行更改,但可能在设计器中打开了新创建的 ECT。所以你需要做的是——在 CA 中设置权限后,不要保存对 ECT 的任何更改,直到你确认你在 DESIGNER 中看到了你在 CA 中设置的权限(这是右上角的框)。这就是问题所在:SP 设计器不允许您设置权限,但在保存时会很高兴地覆盖它们,因此如果您在设计器中没有看到任何权限,那么保存该 ECT 会将权限“重置”为空。

场景 2B:经常对 ECT 进行更改必须让它们“传播”到站点(这正是我的设想,我没有读过这个)。进行更改后,我看到我的 ECT 完全损坏(您会收到一个无用的相关 ID 错误)或者只是看不到我的更改。解决方案是“如果你得到他们就吸烟”。我通常在进行更新后至少等待 10 分钟,直到我开始担心 ECT 是否损坏、不显示我的更改等。

希望这可以帮助!

于 2017-08-10T16:01:39.620 回答