私は単純な SharePoint 2010 BCS ソリューションを使用して、2 つのエンティティとそれらの間の単純な親子関係を定義しています。サービス クラス (および) とは別のアセンブリに、たまたまエンティティ クラス (Parent
および) があります。これは、Finder メソッドと SpecificFinder メソッドのみを使用する場合には問題にならないようですが、AssociationNavigator メソッドを実行しようとすると失敗します。エンティティ タイプが BCS モデル定義と同じアセンブリにあり、サービス クラスが関連付けられている場合、AssociationNavigator は正常に動作します。次のように AssociationNavigator を呼び出しています。Child
ParentService
ChildService
var entity_instance_collection = new EntityInstanceCollection(1);
entity_instance_collection.Add(parent_entity_instance);
var association = (IAssociation)parent_entity.GetMethodInstance("ParentToChildAssociationNavigator", MethodInstanceType.AssociationNavigator);
var child_items = child_entity.FindAssociated(entity_instance_collection, association, lobi);
エンティティ型が別のアセンブリにある場合、実行しようとすると InvalidMetadataObjectException が発生しFindAssociated
ます。
名前空間 'BdcModelProject2.BdcModel1' の名前 'Parent' のエンティティ (外部コンテンツ タイプ) の名前 'ReadItem' のメソッドの名前 'parent' のパラメーターの TypeDescriptor TypeName 'BdcModelProject2.BdcModel1.Parent, BdcModel1' で記述された型を読み込めません。
このInnerExceptionで:
アセンブリ 'BdcModelProject2、バージョン = 1.0.0.0、カルチャ = ニュートラル、PublicKeyToken = 50bc5a1f7318bdeb' からタイプ 'BdcModelProject2.BdcModel1.Parent' を読み込めませんでした。
したがって、私のアプリは、エンティティが実際に定義されているアセンブリ (ClassLibrary1) ではなく、BCS モデルが定義されているアセンブリ (BdcModelProject2) からエンティティ タイプを読み込もうとしているようです。私はこれについていくつかの混乱のポイントがあります:
- BCS モデルには、エンティティ クラスを実装するクラスの型を記述する TypeDescriptors に TypeName 属性があることがわかりますが、Finder メソッドと SpecificFinder メソッドは、ここで意味不明な情報が提供されている場合でも適切に機能しているように見えますが、AssociationNavigator の読み込みに失敗します。タイプ。どうしてこれなの?
- Visual Studio で生成された bdcm ファイルまたは MSDN ドキュメントのTypeDescriptorに、エンティティ型のアセンブリ名を指定できる場所を示す場所がありません。
エンティティが別のアセンブリで定義されている場合、BCS プロジェクトでエンティティ タイプを使用するにはどうすればよいでしょうか。