我有一个简单的SharePoint 2010 BCS解决方案,我在其中定义了两个实体以及它们之间的简单父子关系。我碰巧在我的服务类(Parent
和Child
)的单独程序集中有实体类(ParentService
和ChildService
)。当使用Finder和SpecificFinder方法时,这似乎不会出现问题,但是当我尝试执行AssociationNavigator方法时,它会失败。当我的实体类型与BCS模型定义在同一个程序集中并关联服务类时,AssociationNavigator可以正常工作。我这样称呼AssociationNavigator:
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);
当实体类型在单独的程序集中时,我在尝试执行FindAssociated
时会收到InvalidMetadataObjectException:
无法加载TypeDescriptor TypeName描述的Type 带名称的参数'BdcModelProject2.BdcModel1.Parent,BdcModel1' 实体上具有名称“ReadItem”的方法上的“父”(外部内容 在命名空间'BdcModelProject2.BdcModel1'中输入名称'Parent'。
有这个InnerException:
无法从程序集中加载“BdcModelProject2.BdcModel1.Parent”类型 'BdcModelProject2,Version = 1.0.0.0,Culture = neutral, 公钥= 50bc5a1f7318bdeb”。
所以,似乎我的应用程序只是尝试从定义BCS模型的程序集(BdcModelProject2)加载我的实体类型,而不是实际定义我的实体的程序集(ClassLibrary1)。我对此有几点困惑:
那么,当在不同的程序集中定义这些实体时,如何在BCS项目中使用实体类型?
答案 0 :(得分:0)
这里有两种可能性:
我们经常遇到旧版本在GAC中的问题。当bin目录中安装了新版本时,它会忽略它并继续使用GAC中的版本。然后删除GAC中的版本,但它仍然无效,因为它已缓存旧版本。最后,IIS重置或机器重启使其正常工作。
简短回答:尝试在机器上找到旧版本的dll。
修改强>
您可以使用装配绑定日志查看器等工具来追踪问题。
请参阅:http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.90).aspx