我正在开发销售点系统,该系统使用唯一的字母数字UPC代码作为数据库中的标识列。允许用户输入他们想要的任何字母数字UPC代码。我想使用C#和Linq to Entity为UPC实现自动生成选项,但是在逻辑上遇到了一些问题。我试图将其纳入A0000000010'的格式,其中' A'表示产品类型,后面的数字是随机的,或者是一个计数的数字,它们真的不重要。这是我的基本架构
productID | description | UPC
1 | ItemNum1 | 12345
2 | ItemNum2 | ABCDE
我可以轻松地创建一个随机数并将其附加到该字母,然后检查它是否存在于数据库中,如果确实存在,请再次尝试,一次又一次,但是一个强力方法似乎可能需要很长一段时间,所以我想避免这种情况。
我还以为我可以抓住最后一个productID列(在这种情况下是2),递增它(现在它是3),附上必要的0(0000000003),然后附上正确的字母(A0000000003),但由于用户可以手动或通过扫描创建自己的UPC,因此他们可以轻松输入UPC,例如A0000000015'这将影响到这一点。
为了解决这个问题,我可以做一些事情,如果UPC已经存在,减少id(因此A0000000003将变为A0000000002),然后再次尝试,再次,再次,现在我们又回到了蛮力方法,虽然速度快得多。
我的问题是:有没有办法,使用C#和Linq to Entity,生成一个保证不存在于数据库中的字符串?