指定的强制转换无效查询Sharepoint

时间:2010-11-09 15:57:20

标签: c# visual-studio-2008 sharepoint-2010 linq-to-sharepoint

使用SPMETAL我生成了一个C#文件,允许我使用LINQ来访问Sharepoint对象。

但是,使用非常简单的查询会产生一个奇怪的错误:

  

指定的演员表无效。

     

堆栈追踪:
         at Set__zleceniaTrigger(Object,Object)          在Microsoft.SharePoint.Linq.StaticPropertyMap.SetToEntity(对象实体,对象值)          在Microsoft.SharePoint.Linq.SPItemMappingInfo.MaterializeEntity [TEntity](DataContext dc,SPDataList list,SPListItem item,SPItemMappingInfo itemMappingInfo,JoinPath joinPath)          在lambda_method(ExecutionScope,SPListItem)          at System.Linq.Enumerable.WhereSelectEnumerableIterator 2.MoveNext() at System.Collections.Generic.List 1..ctor(IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable 1 source)          在C:\ XXXXXXXXX \ QuickModify \ Program.cs中的QuickModify.Program.Main(String [] args):第42行          在System.AppDomain._nExecuteAssembly(Assembly assembly,String [] args)          在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()          在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态)          在System.Threading.ThreadHelper.ThreadStart()

查询本身如下所示:

SPEntitiesDataContext ctx = new SPEntitiesDataContext("http://localhost:1080");  
var tasks = ctx.Zlecenia.ToList();

当然,这不是最优的查询,但是使用.Where只过滤所需记录也会返回相同的错误。

我发现我可以使用.Select(z => new ZlecenieItem(){ ColumnName = z.ColumnName, ... })选择特定的列,但是我无法使用它来选择查找列,因为我得到以下错误(即使我这样只选择一个列):

  

查询使用不受支持的元素,例如对多个列表的引用,或使用EntityRef / EntitySet对完整实体的投影。

这是有问题的,因为有时我需要从其他列表中获取值,并且使用查找值会很好。

我是否只是在MS产品中找到了我的第一个真正的错误,或者(感觉更有可能)我做错了什么?

1 个答案:

答案 0 :(得分:1)

虽然我仍然不确定为什么以上不起作用,但我设法通过向SPmetal添加自定义配置文件以生成引用来解决问题。

这表明默认的SPmetal配置可能并不总是有效。