![](/img/trans.png)
[英]Datetime accuracy when getting data from DB2 using Entity Framework
[英]Timestamp data from DB2 is not accurate when using EntityFramework
我在IBM DB2中有数据,而我想做的就是使用EntityFramework获得该数据。 我有一列具有以下格式的TIMESTAMP值:dd.MM.yyyy hh:mm:ss.ffffff,它是该表中的主键。
当我从DB2数据库获取数据时,时间戳的一部分丢失了。 另一方面,我有一个具有该ID的字符串属性的实体:
public string Id { get; set; }
这是一种将返回特定商家的方法。 由于时间戳(也称为Id)是唯一的,因此只能预期一个。 但是,当数据被提取并且时间部分丢失时,我得到9个具有相同ID的商人,当然还有例外)。
MerchantEntity IMerchantRepository.GetMerchantByRegistrationNumber(string companyRegistrationNumber)
{
var db = merchantDataContextProvider.GetMerchantContext();
var merchant = db.Merchants.Include(x => x.MerchantProperty).
SingleOrDefault(x => x.MerchantProperty.CompanyRegistrationNumber == companyRegistrationNumber);
return merchant;
}
我尝试将DateTime类型用于Id,唯一的区别是它减少了最后3个数字,而不是整个时间部分。
有没有人遇到过相同或相似的问题? 使用DB2时,谁能获得准确的数据?
时间戳作为主键..不是一个好主意。 但是,如果您确实希望使用时间作为创建商家ID的基础,则可以执行以下操作:
var newId = string.format("{0:D19}", DateTime.Now.Ticks)
会根据当前时间为您提供一个19位长的数字。 当然,问题在于如果PC上的时钟重置,或者您在其他计算机,不同时区等上运行该程序,则该策略将失败。
如果您需要某些东西可以唯一地标识表中的一行,请使用GUID。 它们非常独特,两个不同的流程制造同一个流程的机会非常接近零
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.