- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我们正在创建 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,
1 configurationCallback) at XXXXServiceMySql.WebApiApplication.Application_Start() in c:\PROJECTS\XXXXServiceMySql\XXXXServiceMySql\Global.asax.cs:line 17
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
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/
如何从 DateTimeOffsetDateTimeOffset 对象中提取日期?我认为 Date 属性只会返回日期部分。但是,我一直在获取整个日期,即 7/17/2014 12:00:00 AM -
如何计算可为空的 DateTimeOffset 之间的时间?到 DateTimeOffset.Now ? 我需要像“x 天 y 小时前”这样的结果 我是从做这样的事情开始的。 var creati
在我的 ASP.NET Core Web-API 项目中,我收到了对我的一个 API Controller 的 HTTP POST 调用。 在评估 JSON 负载并反序列化其内容时,Json.NET
我从具有多个 datetimeoffet 列的表中选择一条记录,当我添加 for json auto 时,它将它从 2017-06-21 08:12:16.1430000 +00:00 到 2017-
我仍在学习 C# .NET 库,我该如何处理以下情况。如果有人能指导我正确的方向,将不胜感激。 最佳答案 您不能将空值分配给不可为空的值。解决此问题的一种方法是使用 ?? 添加默认(非空)值。 例如
我目前在 UTC+1 时区。 TimeZoneInfo.Local.BaseUtcOffset 返回 +1。 new DateTimeOffset(DateTime.Today).AddDays(4)
我想将默认值设置为 DateTimeOffset - 它不应该是 DateTime.Now 而是 DateTime.MinValue 或 default(DateTime) 任何想法我该怎么做?这段代
我有这些输入字符串: var timeStr = "03:22"; var dateStr = "2018/01/12"; var format = "yyyy/MM/dd"; var timeZon
如果我有一个表示有效 UTC 时间的 DateTime 实例,以及一个将 DateTime 转换为它适用的时区的偏移量,我该如何构造一个 DateTimeOffset 实例来表示它? var utcD
我正在使用 Quartz.NET( http://quartznet.sourceforge.net/ ) 并且我试图将开始日期设置为午夜。但是我在创建这个日期时遇到了问题。该应用程序将位于不同时区的
我遇到了以下要求的有趣问题:测试进程是否在同一天运行,如果没有运行进程。日期存储为 DataTimeOffset。 我最初的做法是: 将这两个值都转换为 UTC,因为这些日期可能是在不同的时区创建的并
我想从一个字符串中创建一个新的DateTimeOffset offset = -5 我愿意: string dt = "11082016"; DateTime date = DateTime.P
我在理解 DateTimeOffset 时遇到一些问题... 我正在尝试为 Quartz-Job 创建一个简单的触发器。存在一个 triggerbuilder,可以使用它创建这样的触发器: var t
我想从 DateTimeOffset 类型中获取格式化字符串,它应该如下所示:20. July 2009。(带点),我尝试使用以下代码: Birthday.ToString("dd. MMMM yyy
我阅读了有关 DateTimeOffset、属性 DateTime 的文档。 https://msdn.microsoft.com/en-us/library/system.datetimeoffse
我正在使用 C# 驱动程序在我的集合中存储 DateTimeOffset 字段。我想按一段时间对值进行分组,即。按天。 为此,我正在做类似的事情: db.getCollection('Collecti
我们正在将 XML DateTime 值解析为 DateTimeOffset 值。根据W3C XSD documentation for DateTime ,该类型可能有或没有时区信息。 我们的要求是
我有一个 DateTimeOffSet 类型的变量。我想过滤所有在 2010 年 1 月 1 日之后创建的项目。 所以我写了下面的查询: var _date = new DateTimeOffs
我将时间表作为一周中的一天、小时和分钟存储在数据库中。读取数据后,我们为下一次出现的那一天、小时和分钟创建一个 DateTime 对象,但我需要修改它以支持 DST。如有必要,我可以修改数据库。 我知
有没有办法将 DateTimeOffset 转换为午夜后的分钟数? 我希望偏移部分反射(reflect)在它给出的答案中。 最佳答案 dateTimeOffset.UtcDateTime.TimeOf
我是一名优秀的程序员,十分优秀!