0

使用 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.WhereSelectEnumerableIterator 2.MoveNext() at System.Collections.Generic.List1..ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 来源)在 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 产品中发现了我的第一个真正的错误,或者(感觉更有可能)我做错了什么?

4

1 回答 1

1

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

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

于 2010-11-25T13:57:32.053 回答