0

我正在 Visual Studio (2008) 中修改我的报表模型。如果我刷新我的 dsv 文件(在更改基础数据库之后),然后手动反映 smdl 文件中的相同更改,似乎每当我从实体中删除属性时,它都会以某种方式破坏 ReportModel 项目。

删除属性会从 smdl 文件的<IdentifyingAttributes><DefaultDetailAttributes>部分中删除如下引用:

<AttributeReference>
  <!--My Attribute-->
  <AttributeID>G30ea3652-7f92-41d0-a25a-500c82317288</AttributeID>
</AttributeReference>

并且还删除了属性本身:

<Attribute ID="G30ea3652-7f92-41d0-a25a-500c82317288">
  <Name>My Attribute Name</Name>
  <DataType>Integer</DataType>
  <Nullable>true</Nullable>
  <SortDirection>Descending</SortDirection>
  <Width>4</Width>
  <Format>g</Format>
  <EnableDrillthrough>true</EnableDrillthrough>
  <ContextualName>Merge</ContextualName>
  <ValueSelection>Dropdown</ValueSelection>
  <Column Name="Blah" />
</Attribute>

我看不出这会如何弄乱 smdl 文件。

无论如何,我的问题是:有没有其他人有同样的问题?如果是这样,有没有办法解决它(除了自动生成 smdl)。

另外,是否有自动生成的原因?(同事告诉我不要这样做,但不明白这背后的动机)..

提前感谢您的帮助,皮特。

4

2 回答 2

1

好的,我可以在这里回答我自己的问题。似乎存在与Hidden Fields相关的问题。如果您尝试删除的属性或角色是从另一个角色的 Hidden Fields 集合中引用的,那么当您删除它(属性或角色)时,该集合中的引用将成为孤立对象。看起来 Visual Studio 不够聪明,无法做到这一点 - 呸!

当您在保存后尝试重新打开报表模型项目时,您会收到可爱的、富有表现力的错误消息:“对象引用未设置为对象的实例。”

当我收到“对象引用...”错误时,我能看到解决此问题的唯一方法是在记事本(或类似工具)中打开 smdl 文件并搜索您要删除的内容的 GUID 引用。请注意,在角色的情况下,它可能发生在关系的任一端(源或目标)。

于 2009-08-03T16:36:54.707 回答
0

只是为了扩展答案,隐藏字段看起来像这样(在 中SMDL):

<!-- NameOfEntity -->
<FieldFolderItemId>G3a4a8c45-c900-4286-afdd-d31deb70be41</FieldFolderItemID>

只需手动删除整个条目。
有点狡猾,但它的工作...

于 2011-01-13T03:09:29.753 回答