簡體   English   中英

使用EntityFramework時來自DB2的時間戳數據不准確

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM