gpt4 book ai didi

mysql - System.DateTime 类型不是受支持的类型。更改为使用 System.DateTimeOffset

转载 作者:可可西里 更新时间:2023-11-01 06:30:53 25 4
gpt4 key购买 nike

我们正在创建 WebApi 2.2 服务并使用上面列出的技术。我们的后端数据存储是 MySql 5.6。我们正在使用 dotConnect for MySql 来处理数据存储。在数据库中,有一个类型为 Timestamp 的 RowVersion 列。在 EF 中,我成功生成了模型,但我注意到 RowVersion 设置为 DateTime。当我运行 WebApi 时,出现以下运行时异常,因此我需要将类型更改为 DateTimeOffset,因为 Timestamp 不可用。

在我们的应用程序中,我们将使用带有 ETag 的 RowVersion 进行并发处理。所以,我们只会在我们的应用程序中读取 RowVersion;每当发生插入或更新时,数据库将自动更新 RowVersion。

我不知道如何解决这个问题...也许,有一些方法可以添加自动类型转换,因此模型中的 RowVersion 是 Int64,我们通过发送时间戳自动在 Int64 和时间戳之间转换。对我们的应用值(value)。我们只是阅读它,所以这似乎是合理的。

当我在 EF 模型中将 RowVersion 更改为 Int64 并构建应用程序时,我收到以下错误:

Error 1 Error 2019: Member Mapping specified is not valid. The type 'Edm.Int64[Nullable=True,DefaultValue=]' of member 'Version' in type 'Model.customer' is not compatible with 'Devart.Data.MySql.timestamp[Nullable=True,DefaultValue=,Precision=0]' of member 'Version' in type 'Model.Store.customers'. C:\PROJECTS\ServiceMySql\ServiceMySql\Models\Model.edmx 898 17 ServiceMySql

非常感谢您帮助我找出解决此问题的方法。

感谢您的宝贵时间和建议,

迈克

本文开头提到的异常(exception)情况:

System.ArgumentException was unhandled by user code
HResult=-2147024809 Message=The type 'System.Nullable1[[System.DateTime, mscorlib, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089]]' of property
'Version' in the 'XXXXServiceMySql.Models.customer' type is not a
supported type. Change to use 'System.DateTimeOffset' or ignore this
type by calling Ignore<XXXXServiceMySql.Models.customer>() on
'System.Web.OData.Builder.ODataModelBuilder'. Parameter name:
navigationProperty Source=System.Web.OData<br/>
ParamName=navigationProperty StackTrace:
at System.Web.OData.Builder.EntityTypeConfiguration.AddNavigationProperty(PropertyInfo
navigationProperty, EdmMultiplicity multiplicity, Boolean
containsTarget)
at System.Web.OData.Builder.EntityTypeConfiguration.AddNavigationProperty(PropertyInfo
navigationProperty, EdmMultiplicity multiplicity)
at System.Web.OData.Builder.ODataConventionModelBuilder.MapEntityType(EntityTypeConfiguration
entity)
at System.Web.OData.Builder.ODataConventionModelBuilder.MapType(StructuralTypeConfiguration
edmType)
at System.Web.OData.Builder.ODataConventionModelBuilder.MapTypes()
at System.Web.OData.Builder.ODataConventionModelBuilder.GetEdmModel()
at XXXXServiceMySql.WebApiConfig.GenerateEdmModel() in c:\PROJECTS\XXXXServiceMySql\XXXXServiceMySql\App_Start\WebApiConfig.cs:line
89
at XXXXServiceMySql.WebApiConfig.Register(HttpConfiguration config) in
c:\PROJECTS\XXXXServiceMySql\XXXXServiceMySql\App_Start\WebApiConfig.cs:line
55
at System.Web.Http.GlobalConfiguration.Configure(Action
1 configurationCallback) at XXXXServiceMySql.WebApiApplication.Application_Start() in c:\PROJECTS\XXXXServiceMySql\XXXXServiceMySql\Global.asax.cs:line 17
InnerException:

最佳答案

我相信,从最新版本的 WebApi OData v4 (5.4.0) 开始,DateTime 得到了一定程度的支持。它在元数据中仍然被定义为 DateTimeOffset,但至少你的模型可以处理 DateTime。参见 http://odata.github.io/WebApi/datetime-support/了解更多详情。

关于mysql - System.DateTime 类型不是受支持的类型。更改为使用 System.DateTimeOffset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25187630/

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