【问题标题】:DateTime syncing issue in Azure Mobile ServicesAzure 移动服务中的日期时间同步问题
【发布时间】:2019-11-18 13:35:11
【问题描述】:

问题是我在本地 sqlite 中的 text 数据类型中有 2 列 CreatedAtUpdatedAt,而在服务器上这两列是 datetimeoffset 数据类型。

当我使用 azure 的 MobileServiceClient 插入/更新任何记录时,除了这两列之外的所有内容都会进入数据库,从而产生 NULL 值。

同样,如果我使用SQLite 连接更新这些列,它会更新记录就好了。但是,当我同步时,Azure 不会在服务器上获取这两列的值。

我尝试过的事情:

  • 在这些列中插入所有可能的日期时间格式,我认为这是问题所在。
  • 更改列的数据类型以匹配服务器上的数据类型,但 MobileServiceClient 插入默认日期和时间,即 01/01/0001

我无法理解此服务如何在本地和服务器上处理数据。 有什么帮助吗?

【问题讨论】:

    标签: c# sqlite azure xamarin.forms azure-mobile-services


    【解决方案1】:

    在服务器上创建表时,它习惯于将这两列设置为自动获取值,而不是从客户端填充。

    列的 DDL 如下所示:

    [createdAt] datetimeoffset(3) NOT NULL DEFAULT (CONVERT([datetimeoffset](3),sysutcdatetime(),(0))), [updatedAt] datetimeoffset(3) NULL,

    还有一个updatedAt的触发器:

    CREATE TRIGGER [DbName].[TR_TableName_InsertUpdateDelete] ON [DbName].[TableName]
    WITH EXECUTE AS CALLER
    AFTER INSERT, UPDATE, DELETE
    AS
            BEGIN
                UPDATE [DbName].[TableName] SET [DbName].[TableName].[updatedAt] = CONVERT (DATETIMEOFFSET(3), SYSUTCDATETIME())
                FROM INSERTED
                WHERE INSERTED.id = [DbName].[TableName].[id]
            END
    GO
    

    【讨论】:

    • 您是否使用 SQL Server 作为后端存储?使用 SQL Server Management Studio (SSMS) 或 Visual Studio SQL Server Dev Tools 等工具连接到数据库,并使用 createdAt 默认值和 updatedAt 触发器更新或重新创建表定义。
    猜你喜欢
    • 1970-01-01
    • 2016-05-29
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多