如何在创建唯一ID时捕获错误?
我使用guid而不是自动增量,但我不知道如何在重复时捕获错误,我创建了一些代码,使用高级linq获取SQL中的数据,以了解我创建的id是否存在,但是最后我仍然有一个错误。
有人帮助我,并给我一些最好用的提示/链接。这是我的示例代码。
var nid = Guid.NewGuid();
var getCartIds = _cartUoW.ShoppingCarts.Get().ToList();
bool exist = false;
do
{
nid = Guid.NewGuid();
exist = getShoppingCartId.Any(x => x.Id == nid);
} while(exist);
答案 0 :(得分:1)
你几乎可以忽略这个错误。如:除非你在代码中完全废弃,即使你每天创造一百万个购物车,在你的一生中获得双倍的机会是SLIM。它是如此之低,用户可以像wekk一样发生“内部错误发生”错误,直到他刷新。
虽然不保证每个生成的GUID都是唯一的,但是唯一密钥的总数(2 ^ 128或3.4×10 ^ 38)是如此之大,以至于两次生成相同数字的概率非常小。例如,考虑可观察的宇宙,其中包含大约5×10 ^ 22个星;然后每个星星都有6.8×10 ^ 15个通用唯一的GUID。 (来自维基百科http://en.wikipedia.org/wiki/Globally_Unique_Identifier)
如果您经常获得重复的GUID,那么您没有正确生成它们/重用生成的GUID。它不是GUID的基本问题,我宁愿修复这一部分。