1

私は DB4O を使用して新しい Web アプリケーションを構築して遊んでいます。私が苦労していることの 1 つは、現在 DB4O がステートレス アプリケーション (つまり、主に Web アプリケーション) をサポートしていないことと、自動生成された ID が必要なことです。

DB4O のイベントにフックしたり、数値 ID ではなく GUID を使用したり、何らかの理由で ID のシステムをまったく使用しないようにするなど、多くの創造的で興味深いアプローチを見つけることができました。

それぞれのアプローチにはメリットがありますが、あまり洗練されていないアプローチも同様に最適である可能性があるのではないかと考えています。次の擬似コードを検討してください。

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

とても単純なアプローチのように思えますが、通常、ここで「本当に明らかなことを見逃した」と考え始めます。私は持っていますか?

4

2 に答える 2

1

新しいdb4o-extras プロジェクトには、AutoIncrementID サポート アドインが含まれています。プロジェクトは開始されたばかりで、コンパイル済みのバイナリをまだ投稿していません。ただし、単一の属性を使用して、「ID」列または自動インクリメント ID フィールド/プロパティのサポートを追加します。

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

[AutoIncrement]
protected int _id;
public property int ID {
  get{return _id;}
  set{this._id = value;}
}
于 2010-10-08T18:34:18.397 に答える
1

保存後までカウントする前に myObject の挿入と削除をロックする必要があります

于 2010-05-08T08:26:54.343 に答える