我有一个列数据类型"时间戳"在sql server中。
目前我正在尝试将此表中的数据提供给sqlite数据库。因为它只需要字符串值。到目前为止,我还没有找到正确的方法来转换为字符串。
所以例如我的SQL值是0x0000000000012DE0
当我使用实体框架获取记录时,我得到字节数组。
尝试使用以下代码转换为字符串。
value = BitConverter.ToInt64(Version, 0);
但是对于相同的记录,我得到0xE02D010000000000
这是一个区别。
第二,因为我正在开发azure移动应用程序,这个数据也通过WebAPI控制器进入android。我从fiddler获得的结果是这种格式的东西
AAAAAAABM8s =
我还希望以上述格式转换字节arrray值。
有什么建议吗?
答案 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#来解决这个问题。