我有这个LINQ查询:
var children = DataContext.Entities.Nodes
.Where(n => n.Parent.Name == node.Key)
.OrderBy(n => n.SortOrder);
foreach (var child in children)
var childNode = CreateNode(child);
当使用SQL Server时,一切正常。但是,当使用SqlCe时,我会遇到以下错误:
[SqlCeException (0x80004005): Not implemented]
System.Data.SqlServerCe.SqlCeDataReader.ProcessResults(Int32 hr) +125
System.Data.SqlServerCe.SqlCeDataReader.IsEndOfRowset(Int32 hr) +131
System.Data.SqlServerCe.SqlCeDataReader.Move(DIRECTION direction) +376
System.Data.SqlServerCe.SqlCeDataReader.Read() +95
System.Data.Common.Internal.Materialization.Shaper`1.StoreRead() +44
[EntityCommandExecutionException: An error occurred while reading from the store provider's data reader. See the inner exception for details.]
System.Data.Common.Internal.Materialization.Shaper`1.StoreRead() +130
System.Data.Common.Internal.Materialization.SimpleEnumerator.MoveNext() +46
这里发生了什么事情,有任何想法吗?
我甚至在foreach
之前尝试调用ToArray()
,但并没有帮助。
编辑:
如果我将查询更改为:
var children = DataContext.Entities.Nodes
.Where(n => n.Parent.Name == node.Key)
.ToArray()
.OrderBy(n => n.SortOrder);
它能够运行...为什么?
编辑2: 顺便提一下,Parent
导航器指向同一个表格,所以每个 Node
可以有 {0..1} 个父 Node
。
ToArray()
进行分割。 - Alfero ChingonoNode
类型的父级以及子级。 - Alfero Chingono