我正在使用DB4O构建一个新的web应用程序--堆积如山的乐趣和一些真正有趣的东西。我正在苦苦挣扎的一件事是,DB4O目前缺乏对无状态应用程序(主要是web应用程序)的支持,并且需要自动生成的is。
我发现有许多富有创意和有趣的方法,无论是hook into DB4O's events、use GUIDs rather than numeric IDs还是其他任何原因,都可以完全避免使用任何ID系统。
虽然每种方法都有其优点,但我想知道不那么优雅的方法是否同样是最合适的。考虑下面的伪代码:
If ID == 0 or null
Set ID = (typeof(myObject)).Count
myObject.Save这似乎是一种简单得令人眼花缭乱的方法,通常在这里我开始思考,“我错过了一些非常明显的东西”。我有吗?
发布于 2010-05-08 16:26:54
您需要在计数到之前锁定myObject的插入和删除,直到保存之后
发布于 2010-10-09 02:34:18
新的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;}
}https://stackoverflow.com/questions/2793362
复制相似问题