在无状态(Web)DB4O应用程序中管理唯一ID

时间:2010-05-08 08:03:31

标签: asp.net-mvc db4o identity-column

我正在使用DB4O构建一个新的Web应用程序 - 一堆乐趣和一些非常有趣的东西。我正在努力解决的一件事是DB4O目前缺乏对无状态应用程序(主要是Web应用程序)的支持以及对自动生成ID的需求。

我能够找到许多有创意且有趣的方法hook into DB4O's eventsuse GUIDs rather than numeric IDs或者出于任何原因避免使用任何ID系统。

虽然每种方法都有其优点,但我想知道不那么优雅的方法是否同样最适合。请考虑以下伪代码:

If ID == 0 or null
Set ID = (typeof(myObject)).Count
myObject.Save

这似乎是一种非常简单的方法,通常在这里,我开始思考,“我错过了一些非常明显的东西”。我有吗?

2 个答案:

答案 0 :(得分:1)

您需要在count之前锁定myObject的插入和删除,直到保存

之后

答案 1 :(得分:1)

db4o-extras project包含AutoIncrementID支持加载项。该项目刚刚开始,我还没有发布已编译的二进制文件。但它通过使用单个属性添加了对“Identity”列或自动递增的ID字段/属性的支持。

[AutoIncrement]
public property int ID {get; private set;}

[AutoIncrement]
protected int _id;
public property int ID {
  get{return _id;}
  set{this._id = value;}
}