gpt4 book ai didi

entity-framework-4 - Entity Framework 4.0 with Sql Compact Edition 4.0 - 未实现异常

转载 作者:行者123 更新时间:2023-12-01 05:40:56 25 4
gpt4 key购买 nike

我有这个 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 navigator 指向同一个表,所以每个 Node可以有 {0..1} 个父级 Node .

最佳答案

编辑部分中的查询有效的事实表明问题出在 OrderBy(n => n.SortOrder)子句,因为只有这部分查询...

DataContext.Entities.Nodes
.Where(n => n.Parent.Name == node.Key)

...实际上是在服务器上执行的。调用 .ToArray()您强制执行查询并将(未排序的)列表加载到内存中。以下 OrderBy在这个列表上定义一个查询(它是 IEnumerable 而不是 IQueryable)。然后,第二个查询将在此列表的内存中执行,并且 EF 或 SqlCe 不参与此排序。

但是一般SqlCe支持 OrderBy ,所以问题仍然是为什么第一个查询会引发异常。
Node.SortOrder是什么类型你想排序吗?例如,它是可为空的还是 SqlCe 无法排序的某些“异国情调”类型?

关于entity-framework-4 - Entity Framework 4.0 with Sql Compact Edition 4.0 - 未实现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5641771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com