可以生成没有数据库表的序列号吗?

时间:2011-04-27 14:04:18

标签: c# asp.net

我正在为ASP.NET中的客户端编写一个简单的Web表单。表单在提交时发送电子邮件。其中一个要求是每封电子邮件都应有一个连续的票号。

我为实现这个目的而提出的两个选项包括将最后一个数字写入数据库,然后选择它并递增它,或者使用文本文件执行类似的操作。

如果可能的话,我想避免外部依赖,并且为单个值创建数据库表似乎有点过分。但是,文本文件方法确实很简陋,如果文本文件被删除或覆盖,则容易失败。

我可能会考虑其他选择吗?

3 个答案:

答案 0 :(得分:4)

我可能会使用带有身份(自动增量)列的数据库,主要是因为它负责多个线程或同一应用程序的分布式版本之间的锁定。它还可以通过重启和其他系统事件很好地恢复。

大多数数据库都提供了在插入操作期间返回递增的id的方法,因此您不必选择退出记录来获取递增的id。

答案 1 :(得分:0)

您可以将计数器置于应用程序状态。但是,这样的事情会在应用程序重新启动时丢失(例如IIS restarrt),并且不会在服务器场中的多个Web服务器之间共享。我不推荐这个

答案 2 :(得分:0)

您可以将对象序列化为磁盘,然后在需要时进行反序列化。将序列化文件放在受保护的位置。但是这种方法存在并发问题。