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

OK、ここで自分の質問に答えることができます。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 に答える