2011-03-19 69 views
0

我有一个网页的Default.aspx生成每个新用户的ID后,该ID将被subbmitted数据库上的按钮点击Default.aspx ...如何为每个用户生成唯一的ID?

如果其他用户也进入相同的时间ID是一样的......直到他们按下的Default.aspx

如何摆脱这个问题......使......每个用户获分配的唯一ID按钮...

即时通讯使用的读写代码来生成唯一的ID ..

回答

1

你可以使用一个Guid为ID秒。和,以产生一个唯一的ID:

Guid id = Guid.NewGuid(); 

另一种可能性是在数据库中使用自动递增主列,以便它是生成唯一标识符数据库中。

1

三个选项

  1. 使用GUID:Guid.NewGuid()会生成唯一的GUID。 GUID当然比整数长得多。

  2. 使用intelocked操作递增共享计数器。 Interlocked.Increment是线程安全的。无论是过程循环的代码将创建一个新的AppDomain,并重新开始计数的刷新:这是否所有的请求发生在同一个AppDomain中才起作用。

  3. 使用数据库中的IDENTITY列。该数据库是专门用来处理这个,那个插入新行的请求中,使用SCOPE_IDENTITY选择价值认同内存中的数据更新(奥姆斯应该处理这个给你)。 (这是SQL Server,其他数据库具有相同的功能。)

那里#3几乎肯定是最好的。

1

您可以生成一个GUID:

Guid.NewGuid() 

或者你可以让数据库插入时生成它。一种方法是通过一个序列。参见Surrogate Keys

维基百科文章从文章:

在数据库中的代理键是用于在任一所建模的世界的实体,或在数据库中的对象的唯一标识符。代理键不是从应用程序数据派生的。

的顺序/自动增量列选项将是更简单,也更容易记住手动查询您的数据库(在调试过程中)时,但在我的工作中的DBA说,他通过交换得到了20度%的性能提高到Guids。他使用的是Oracle,和他的数据库是巨大的,但:)

0

我用一个实用的静态方法生成的ID,基本上使用完整的日期时间(包括秒),并产生表示3个或4个字符,并返回一个随机数整个事情,那么你可以将它保存到数据库。