9

仮説的な質問があります(少なくとも今のところ:))

いくつかのカスタム コンテンツ タイプに基づいてリストを作成するとします。そのリストに約 1000 の項目を追加します (本番環境)。その後、顧客が来て、そのカスタム コンテンツ タイプを変更する必要があると言いました。

カスタム コンテンツ タイプを変更すると、リストはどうなりますか? 自動的に更新されますか(疑わしい)?また、作成済みのリスト アイテムについてはどうでしょうか。

これについての経験はありますか?

4

2 に答える 2

17

したがって、コンテンツ タイプに関するいくつかの問題があります。

まず、コンテンツ タイプには、サイト コンテンツ タイプとリスト コンテンツ タイプの 2 種類があります。サイト コンテンツ タイプは、ギャラリーに常駐する「テンプレート」です。サイト コンテンツ タイプがリストで使用される場合、コンテンツ タイプは、指定されたリストのリスト コンテンツ タイプとしてインスタンス化されます。

第 2 に、コンテンツ タイプはいくつかの方法で作成および変更できます。これにより、データがデータベースに存在する 3 つのモードのいずれかが決定されます。

GUI を使用してコンテンツ タイプを作成した場合、または API を使用してカスタム コードを使用してコンテンツ タイプを作成した場合、サイト コンテンツ タイプとリスト コンテンツ タイプの両方がデータベース内で「データベースのみ」の状態になります。これは、コンテンツ タイプの定義をデータベースで検索していることを意味します。

コンテンツ タイプをCAMLの機能として作成した場合、サイトコンテンツ タイプはデータベースでゴースト化されます (v3 ではカスタマイズされていません)。これは基本的に、コンテンツ タイプを構成するサイト列をデータベースが 12 ハイブの機能 XML で検索することを意味します。つまり、機能を更新できるということであり、更新コンテンツ タイプで新しいサイト列を使用できるようになりますよね?

残念ながらそうではありません: リスト コンテンツ タイプもあったことを覚えていますか? ここで残念なことに、これらのリスト コンテンツ タイプはコードを使用してインスタンス化されるため、「データベースのみ」の状態になります。これは、変更がサイト コンテンツ タイプにのみ表示され、そのコンテンツ タイプを使用する既存のリストには表示されないことを意味します。

この問題を修正するにはいくつかの方法があります。解決策は、ニーズと行っている変更の種類 (フィールドの削除、フィールドの追加、フィールドの変更) によって異なります。

たとえば、時間の経過とともにコンテンツ タイプが変化しても、既存のアイテム メタ データを維持したい場合がよくあります。コードを使用してリスト コンテンツ タイプの変更をプッシュすると、変更または削除されたフィールドに格納されているデータが失われます。これに対する解決策は、古いコンテンツ タイプに基づいて完全に新しいコンテンツ タイプを追加することですが、フィールドは変更されています。新しいコンテンツ タイプを (コードまたは機能 XML を使用して) 追加し、機能レシーバーなどを使用して、古いコンテンツ タイプを使用していたすべてのリストに新しいコンテンツ タイプを伝達し、その後、古いコンテンツ タイプを非表示としてマークします。これにより、古いメタ データを保持できますが、新しいメタ データ以外を使用して新しいアイテムを追加することはできません。

実稼働環境に直接アクセスできる場合、および顧客のガバナンス計画で許可されている場合は、この質問に対する他の回答で言及されているアプローチが推奨されます。ただし、SharePoint の他の成果物と同様に、構造化された方法でコンテンツ タイプを展開することをお勧めします。構造化されていない方法で新しいコンテンツ タイプを追加すると、検索の関連性 (管理されたプロパティ) に影響を与え、サイトの一般的な分類にも影響を与える可能性があります (サイトの列が再利用されないなど)。プロダクションサイト、私はそれをお勧めしません!

これは、少なくとも将来のコンテンツ タイプに対して推奨する最終的なアプローチにつながります。フィーチャー レシーバーを使用して、最初からプログラムでコンテンツ タイプを作成します。こうすることで、コンテンツ タイプ (データベースのみ) の真の状態を常に把握し、将来の変更を管理するための構造化されたアプローチを持つことができます! これを行う方法はいくつかあります

完全を期すために: 3 つのモードについて説明しました。コンテンツ タイプが使用できる最後のモードは「UnGhosted」です。これは、コンテンツ タイプが機能 XML を使用して作成されたが、12 ハイブの元の XML ソースから切り離されていることを意味します。

私の友人である Søren Nielsen は、コンテンツ タイプ階層の監査でコンテンツ タイプについていくつかの良い点を述べています。上記の問題の一部は、MSDN の記事Updating Content Typesで簡単に説明されています。Gary Lapointe は、コンテンツ タイプに関するいくつかの問題に対処する STSADM 拡張機能も提供しています。「コンテンツ タイプの変更を伝達する」を参照してください。

暴言を吐いて申し訳ありませんが、主題は複雑であり、誤解を避けるために徹底的な説明が必要です.

于 2009-01-18T21:49:08.463 に答える
3

コンテンツ タイプを更新する場合、クリックして子コンテンツ タイプを更新できるチェックボックスがあります。このボックスをチェックすると、リストのコンテンツ タイプが更新されます。

子コンテンツ タイプを更新するボックスをオンにしない場合、後で更新を強制する方法がないことに注意してください。したがって、更新せずに後で子コンテンツ タイプに更新を適用する場合は、最初に更新を元に戻し、再度適用する必要があります。

.b

于 2009-01-15T15:32:32.277 に答える