You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF6导航属性Kind为None而非Navigation的间歇性报错问题

EF6 实体导航属性校验异常:属性Kind为"None",预期类型为"Navigation"

问题场景

  • 基于ASP.NET MVC开发Web应用,使用EF6作为ORM框架,数据库包含User、Band两张SQL表,Band表的UserID字段已与User表的Id字段配置导航关联。
  • 应用发布至Azure后偶发抛出异常,提示无法识别两表间的导航链接。

故障触发规律

  • 触发路径固定:程序先查询Band表数据,再检索关联的User表数据时触发
  • 无匹配数据时不触发:Band表无符合查询条件的记录时不会抛出错误
  • 仅当查询到有效Band记录、进一步加载关联的User数据时才会触发异常
  • 发作特征:属于间歇性故障,仅在Web应用冷启动阶段触发

版本背景

  • 历史正常运行版本:.NET 4.6 + OData 5.8.3
  • 出现故障的当前版本:.NET 4.8 + OData 5.8.5
  • 初步排查方向:所有线索均指向.NET版本升级或OData包升级为问题诱因,寻找遇到过同类问题的开发者提供解决方案。

核心报错信息

InvalidOperationException: A property with name 'User' on type '########.Band' has kind 'None', but it is expected to be of kind 'Navigation'

完整错误堆栈

Microsoft.Data.OData.ReaderValidationUtils.ValidateNavigationPropertyDefined(String propertyName, IEdmEntityType owningEntityType, ODataMessageReaderSettings messageReaderSettings) +201
Microsoft.Data.OData.Atom.ODataAtomEntryAndFeedDeserializer.TryReadNavigationLinkInEntry(IODataAtomReaderEntryState entryState, String linkRelation, String linkHRef) +151
Microsoft.Data.OData.Atom.ODataAtomEntryAndFeedDeserializer.ReadAtomLinkElementInEntry(IODataAtomReaderEntryState entryState) +214
Microsoft.Data.OData.Atom.ODataAtomEntryAndFeedDeserializer.ReadAtomElementInEntry(IODataAtomReaderEntryState entryState) +367
Microsoft.Data.OData.Atom.ODataAtomEntryAndFeedDeserializer.ReadEntryContent(IODataAtomReaderEntryState entryState) +95
Microsoft.Data.OData.Atom.ODataAtomReader.ReadEntryStart() +697
Microsoft.Data.OData.Atom.ODataAtomReader.ReadAtFeedStartImplementation() +79
Microsoft.Data.OData.ODataReaderCore.ReadImplementation() +56
Microsoft.Data.OData.ODataReaderCore.ReadSynchronously() +5
Microsoft.Data.OData.ODataReaderCore.InterceptException(Func`1 action) +94
Microsoft.Data.OData.ODataReaderCore.Read() +68
System.Data.Services.Client.Materialization.ODataReaderWrapper.Read() +18
System.Data.Services.Client.Materialization.FeedAndEntryMaterializerAdapter.TryRead() +30

[InvalidOperationException: A property with name 'User' on type '########.Band' has kind 'None', but it is expected to be of kind 'Navigation'.]
System.Data.Services.Client.Materialization.FeedAndEntryMaterializerAdapter.TryRead() +145
System.Data.Services.Client.Materialization.FeedAndEntryMaterializerAdapter.TryStartReadFeedOrEntry() +13
System.Data.Services.Client.Materialization.FeedAndEntryMaterializerAdapter.TryReadEntry(MaterializerEntry& entry) +15
System.Data.Services.Client.Materialization.<LazyReadEntries>d__0.MoveNext() +41
System.Data.Services.Client.Materialization.FeedAndEntryMaterializerAdapter.Read() +29
System.Data.Services.Client.Materialization.ODataReaderEntityMaterializer.ReadNextFeedOrEntry() +10
System.Data.Services.Client.Materialization.ODataEntityMaterializer.ReadImplementation() +72
System.Data.Services.Client.MaterializeAtom.MoveNextInternal() +348
System.Data.Services.Client.MaterializeAtom.MoveNext() +68
System.Linq.<CastIterator>d__97`1.MoveNext() +85
System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source) +183
System.Data.Services.Client.DataServiceQueryProvider.ReturnSingleton(Expression expression) +305
System.Data.Services.Client.DataServiceQueryProvider.Execute(Expression expression) +70
System.Linq.Queryable.FirstOrDefault(IQueryable`1 source) +211
ActiCheck.IISHandler1.ProcessRequest(HttpContext Context) in C:\Users\############\MsgCoordinator.cs:545
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +813
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +132
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +73

环境信息

  • .NET Framework版本:4.0.30319
  • ASP.NET版本:4.8.4494.0
  • 请求最终返回状态码:500 Internal Server Error

内容的提问来源于stack exchange,提问作者Alex22T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 13:54:27