2009-08-25 16 views
0

最近のSilverlight/RIA Servicesプロジェクトでdb4o OODBMSを使用することを検討しましたが、関連付けを行う方法をいくつかアドバイスすることができます。 RIA Servicesでは、関連付けられたすべてのエンティティにAssociationAttributeを付ける必要があります。 AssociationAttributeのコンストラクタでは、エンティティのキ​​ーを関連エンティティに、関連するエンティティ自体のキーを指定する必要があります。DB4O with Silverlight RIA Services

例として、CarIDとCarプロパティを持つRacerクラスとIDプロパティを持つCarクラスがあるとします。私のレーサークラスは、このようなものになります。

class Racer 
{ 
    public int ID { get; set; } 
    public int? CarID { get; set; } 
    [Association("Racer_Car", "CarID", "ID")] 
    public Car Car { get; set; } 
} 

私はdb4oの(または任意のOODBMS)を使用して参照して、問題の外部キーと主キーがないことである、とする必要はない、存在を - そして結果はということです私はRacer.CarIDとCar.IDプロパティは必要ありません。 RIAサービスでこれを動作させるには、自分のユニークな鍵を作成する必要がありますが、私は気にしません。これを行う最善の方法はわかりません。

私の質問は「どのようにこれらのキー/ IDを作成しますか」です。

自動増分フィールドの概念はありません(何も認識していません)ので、手作業で安全に増分するか、Guidのようなものを使用するかを選択する必要があります。前者は複数のユーザーやマルチスレッドで管理するのが難しいので、Guidを使用するのが最も簡単な解決策になると思います。

ここで、Guidの使用を検討してみましょう。最も簡単な解決策は、上記の例のようにIDプロパティを作成することですが、intではなくGuidを使用します。新しいエンティティを作成した後、IDを新しいGuidに設定する必要があります。次に、Racer.Carプロパティを設定するたびに、Racer.CarIDも設定する必要があります。

これを手作業で行うとエラーが発生する可能性があるので、ゲッタとセッタのプロパティで多くの処理をしたいと思っていますが、その実装には最良の方法は不明です。


これまで私が考えていたことです。私はLinqからSQLに生成されたコードがこれらの懸念のいくつかをどのように処理するかを見ていきたいと思います。

ご意見をいただければ幸いです。

おかげで、
-Charles

答えて

0

db4oのは、内部IDs and UUIDsを使用しない、それらを使用することが可能です。読む価値があるのはthisです。

関連する問題