使用 SPMETAL 我生成了一个 C# 文件,允许我使用 LINQ 访问 Sharepoint 对象。
然而,使用一个非常简单的查询会产生一个奇怪的错误:
指定的演员表无效。
堆栈跟踪:
在 Microsoft.SharePoint.Linq.StaticPropertyMap.SetToEntity(Object entity, Object value) 在 Microsoft.SharePoint.Linq.SPItemMappingInfo.MaterializeEntity[TEntity](DataContext dc, SPDataList list, SPListItem item, SPItemMappingInfo itemMappingInfo, JoinPath joinPath) at lambda_method(ExecutionScope , SPListItem) at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() at System.Collections.Generic.List
1..ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable
1 来源)在 QuickModify.Program.Main(String[] args) 在 C:\XXXXXXXXX\QuickModify\Program.cs:line 42 at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 在 Microsoft.VisualStudio.HostingProcess .HostProc.RunUsersAssembly() 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在 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 产品中发现了我的第一个真正的错误,或者(感觉更有可能)我做错了什么?