sql中的timestamp列为有效的字符串表示形式

时间:2017-03-14 12:50:13

标签: c# entity-framework

我有一个列数据类型"时间戳"在sql server中。

目前我正在尝试将此表中的数据提供给sqlite数据库。因为它只需要字符串值。到目前为止,我还没有找到正确的方法来转换为字符串。

所以例如我的SQL值是0x0000000000012DE0

当我使用实体框架获取记录时,我得到字节数组。

尝试使用以下代码转换为字符串。

value = BitConverter.ToInt64(Version, 0);

但是对于相同的记录,我得到0xE02D010000000000

这是一个区别。

第二,因为我正在开发azure移动应用程序,这个数据也通过WebAPI控制器进入android。我从fiddler获得的结果是这种格式的东西

AAAAAAABM8s =

我还希望以上述格式转换字节arrray值。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我的ASP.NET Core,EF Core 2.0,Angular 2应用程序遇到了类似的问题。这是数据库的第一次开发,更改数据库定义不在我的职权范围内。

就我而言,EF Core会自动为我执行并发检查,其中表中存在Timestamp列。这不是更新的问题,因为我可以在体内传递DTO,但删除我不能。

要传递时间戳,我使用了查询字符串。该值是时间戳的Base64字符串表示,例如AAAAAAACIvw =

在我的存储库层中,我将字符串转换回字节数组,例如

   byte[] ts = Convert.FromBase64String(timestampAsBase64String);

然后使用创建和附加模式删除(从而消除任何丢失更新的可能性)

   ModelClass modelobj = new ModelClass { Id = id, Timestamp = ts};
   _dbcontext.Entry(modelObj).State = EntityState.Deleted;

感谢这个主题和CodeProject文章Converting Hexadecimal String to/from Byte Array in C#来解决这个问题。