2014-05-13 4 views
3

Ошибка сервера в приложении «/».OData v4 не поддерживает Nullable <DateTime>?


типа 'System.Nullable`1 [[System.DateTime, mscorlib, Version = 4.0.0.0, культура = нейтральной, PublicKeyToken = b77a5c561934e089]]' имущества 'DataAlteracaoDate' в тип «WebAPIOData.Models.Categoria» не поддерживается. Имя параметра: navigationProperty

Трассировка стека:

[ArgumentException: Тип «System.Nullable`1 [[System.DateTime, mscorlib, Version = 4.0.0.0, культура = нейтральной, PublicKeyToken = b77a5c561934e089]] 'свойства' DataAlteracaoDate 'в Тип' WebAPIOData.Models.Categoria 'не поддерживается. Имя параметра: navigationProperty]
System.Web.OData.Builder.EntityTypeConfiguration.AddNavigationProperty (PropertyInfo navigationProperty, EdmMultiplicity кратностью, булеву containsTarget) +1054
System.Web.OData.Builder.EntityTypeConfiguration.AddNavigationProperty (PropertyInfo navigationProperty , 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, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]]' свойства 'DataAlteracaoDate' в 'WebAPIOData .Models.Categoria 'не является поддерживаемый тип. Имя параметра: navigationProperty]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (HttpContext контекст, HttpApplication приложение) +9936761
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (контекст IntPtr контекста приложения, HttpContext, MethodInfo [] обработчики) +118
System.Web.HttpApplication.InitSpecial (HttpApplicationState состояния, MethodInfo [], обработчики IntPtr контекст приложение, HttpContext контекст) +172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr контекст приложение, HttpContext контекст) +336
System.Web. Hosting.PipelineRuntime.InitializeApplication (IntPtr контекста приложения) +296

[HttpException (0x80004005): Тип «System.Nullable`1 [[System.DateTime, mscorlib, Version = 4.0.0.0, Culture = нейтрален, PublicKeyToken = b77a5c561934e089] ] 'свойства ' DataAlteracaoDate 'в типе' WebAPIOData.Models.Categoria 'не поддерживаемый тип. Имя параметра: navigationProperty]
System.Web.HttpRuntime.FirstRequestInit (HttpContext контекст) +9915300 System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext контекст) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest сог, HttpContext контекст) +254

Мой класс имеет свойство "DataAlteracaoDate" типа Nullable<DateTime>

Я устанавливаю объект на ODataModelBuilder по этому пути:

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

Я использую продлилась версию для Microsoft.AspNet.OData.5.2.0-Бета-гс-140512 в моем приложении.

Есть ли у кого-нибудь предложения?

+3

Голосуйте за них, чтобы вернуть поддержку типа DateTime https://aspnetwebstack.codeplex.com/workitem/2072 и http://aspnet.uservoice.com/forums/147201-asp-net-web-api/suggestions./6242255-odata-v4-service-should-support-datetime – Rory

ответ

3

DateTime больше не поддерживается в OData v4. То, что он поддерживает, - DateTimeOffset, либо обнуляемый, либо нет.

+0

Если я использую OData v4 в своем приложении, мне придется изменить все типы DateTime для DateTimeOffSet, в том числе в моей базе данных? –

+0

Я не думаю, что вам нужно изменить Datetime в базе данных на DatetimeOffset. В действиях контроллера вам необходимо перейти на данные в DateTime, прежде чем сохранять их в базе данных и вернуть их обратно в DateTimeOffset после извлечения из базы данных. –

+0

Есть ли общий способ сделать это? –