C# 指定的强制转换在查询Sharepoint时无效

C# 指定的强制转换在查询Sharepoint时无效,c#,visual-studio-2008,sharepoint-2010,linq-to-sharepoint,C#,Visual Studio 2008,Sharepoint 2010,Linq To Sharepoint,我使用SPMETAL生成了一个C文件,允许我使用LINQ访问Sharepoint对象 但是,使用非常简单的查询会产生一个奇怪的错误: 指定的强制转换无效 堆栈跟踪: 在Set__zlecenianiatriggerObject,Object 在Microsoft.SharePoint.Linq.StaticPropertyMap.SetToEntityObject实体中,对象值 在Microsoft.SharePoint.Linq.SPItemMappingInfo.Materialeentit

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

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

指定的强制转换无效

堆栈跟踪: 在Set__zlecenianiatriggerObject,Object 在Microsoft.SharePoint.Linq.StaticPropertyMap.SetToEntityObject实体中,对象值 在Microsoft.SharePoint.Linq.SPItemMappingInfo.Materialeentity[TEntity]DataContext dc、SPDataList列表、SPListItem项、SPItemMappingInfo项映射信息、JoinPath JoinPath 在lambda_methodExecutionScope,SPListItem 在System.Linq.Enumerable.where选择Enumerableiterator2.MoveNext 位于System.Collections.Generic.List1..ctorIEnumerable1集合 在System.Linq.Enumerable.ToList[TSource]IEnumerable1源 在C:\XXXXXXXXX\QuickModify\Program.cs中的QuickModify.Program.MainString[]参数处:第42行 在System.AppDomain.\u nexecutateAssemblyAssembly程序集中,字符串[]args 位于Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly 位于System.Threading.ExecutionContext.RunExecutionContext ExecutionContext,ContextCallback回调,对象状态 位于System.Threading.ThreadHelper.ThreadStart

查询本身如下所示:

SPEntitiesDataContext ctx = new SPEntitiesDataContext("http://localhost:1080");  
var tasks = ctx.Zlecenia.ToList();
当然,这不是最理想的查询,而是使用的查询。如果只筛选所需的记录,也会返回相同的错误

我发现我可以使用.Selectz=>new zlecenieeItem{ColumnName=z.ColumnName,…}来选择特定的列,但是我不能使用它来选择查找列,因为这样即使我只选择了一列,也会出现以下错误:

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

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


我是在MS产品中发现了我的第一个真正的错误,还是我觉得我做错了什么更可能?

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


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

我会考虑改用SPQuery对象,然后在得到结果后,使用LINQ对其进行进一步筛选以回答这两个注释:a如果此基本查询失败,您真的认为包含.Where子句的查询可能是问题所在吗?如果是这样的话,我会发布更大的东西,但我真的认为没有必要。b我宁愿避免使用SPQuery;我使用LINQ的全部原因是为了避免编写那些该死的CAML文件;您是否记得需要在配置文件中添加哪些设置?突然,我所有的金属对象都停止了工作,这正是我遇到的错误。我强制SPMetal只为我实际需要的SP列表生成类,然后我将这些类限制为只包含最基本的属性。因此,SP工作流使用的代码中不需要的任何属性或对其他列表的引用都被省略。