私はこの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
ここで何が起こっているのか分かりますか?
ToArray()
私も前に電話しようとforeach
しましたが、それは役に立ちませんでした.
編集:
クエリを次のように変更すると:
var children = DataContext.Entities.Nodes
.Where(n => n.Parent.Name == node.Key)
.ToArray()
.OrderBy(n => n.SortOrder);
それは機能します...なぜですか?
編集 2:ところで、Parent
ナビゲーターは同じテーブルを指しているため、それぞれNode
が {0..1} parent を持つことができますNode
。