【问题标题】:Does OData v4 not support Nullable<DateTime>?OData v4 不支持 Nullable<DateTime> 吗?
【发布时间】:2014-07-01 09:34:08
【问题描述】:

“/”应用程序中的服务器错误。


类型'System.Nullable`1[[System.DateTime, mscorlib, 版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089]]' 'WebAPIOData.Models.Categoria' 中的属性 'DataAlteracaoDate' type 不是受支持的类型。参数名称:navigationProperty

堆栈跟踪:

[ArgumentException: 类型'System.Nullable`1[[System.DateTime, mscorlib,版本=4.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089]]' 的属性 'DataAlteracaoDate' 在 'WebAPIOData.Models.Categoria' 类型不是受支持的类型。 参数名称:navigationProperty]
System.Web.OData.Builder.EntityTypeConfiguration.AddNavigationProperty(PropertyInfo navigationProperty,EdmMultiplicity 多重性,布尔值 包含目标)+1054
System.Web.OData.Builder.EntityTypeConfiguration.AddNavigationProperty(PropertyInfo 导航属性,EdmMultiplicity 多重性)+47
System.Web.OData.Builder.ODataConventionModelBuilder.MapEntityType(EntityTypeConfiguration 实体)+447
System.Web.OData.Builder.ODataConventionModelBuilder.MapType(StructuralTypeConfiguration edmType) +120
System.Web.OData.Builder.ODataConventionModelBuilder.MapTypes() +104
System.Web.OData.Builder.ODataConventionModelBuilder.GetEdmModel() +195 WebAPIOData.WebApiConfig.GetModel() 在 c:\Projetos\HND022Git\SmartSales\Implementacao\Codigo\Web\SmartSales\WebAPIOData\App_Start\WebApiConfig.cs:65 WebAPIOData.WebApiConfig.Register(HttpConfiguration 配置) 在 c:\Projetos\HND022Git\SmartSales\Implementacao\Codigo\Web\SmartSales\WebAPIOData\App_Start\WebApiConfig.cs:25 WebAPIOData.WebApiApplication.Application_Start() 在 c:\Projetos\HND022Git\SmartSales\Implementacao\Codigo\Web\SmartSales\WebAPIOData\Global.asax.cs:21

[HttpException (0x80004005): 类型 'System.Nullable`1[[System.DateTime,mscorlib,版本=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' 属性 'WebAPIOData.Models.Categoria' 类型中的 'DataAlteracaoDate' 不是 支持的类型。参数名称:navigationProperty]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext 上下文,HttpApplication 应用程序)+9936761
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext、HttpContext 上下文、MethodInfo[] 处理程序)+118
System.Web.HttpApplication.InitSpecial(HttpApplicationState 状态, MethodInfo[] 处理程序、IntPtr appContext、HttpContext 上下文)+172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext、HttpContext 上下文)+336
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005): 类型 'System.Nullable`1[[System.DateTime,mscorlib,版本=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' 属性 'WebAPIOData.Models.Categoria' 类型中的 'DataAlteracaoDate' 不是 支持的类型。参数名称:navigationProperty]
System.Web.HttpRuntime.FirstRequestInit(HttpContext 上下文) +9915300 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext 上下文) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest WR,HttpContext 上下文)+254

我的班级有一个 Nullable&lt;DateTime&gt; 类型的属性“DataAlteracaoDate

我正在以这种方式在 ODataModelBuilder 上设置实体:

builder.EntitySet<Categoria>("Categorias").EntityType.HasKey(t => t.IdCategoria);

我在我的应用中使用 Prerelease Microsoft.AspNet.OData.5.2.0-rc-140512 的最新版本。

有人有什么建议吗?

【问题讨论】:

标签: odata asp.net-web-api2


【解决方案1】:

OData v4 不再支持 DateTime。它支持的是 DateTimeOffset,无论是否可以为空。

【讨论】:

  • 如果我在我的应用程序中使用 OData v4,我是否必须更改 DateTimeOffSet 的所有 DateTime 类型,包括在我的数据库中?
  • 我认为您不必将数据库中的 Datetime 更改为 DatetimeOffset。在控制器操作中,您必须在将数据保存到数据库之前将其更改为 DateTime,并在从数据库中检索数据后将其更改回 DateTimeOffset。
  • 有通用的方法吗?
  • 我不知道。据我所知,所有选项都在这里:stackoverflow.com/questions/24829422/…>.
猜你喜欢
  • 1970-01-01
  • 2015-07-14
  • 2017-12-29
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 2020-06-15
  • 2014-10-01
  • 1970-01-01
相关资源
最近更新 更多