ドメイン駆動設計から始めて、モデルを有効な状態に保つ必要があることを学びました。クラスの新しいインスタンスを作成するときは、必要なすべての属性をコンストラクターパラメーターとして配置することをお勧めします。
ただし、自動インクリメントされたキーを使用する場合、永続レイヤーからAddメソッドを呼び出すと、この新しいIDが表示されます。キーなしでオブジェクトをインスタンス化すると、何らかの一意の識別子が必要になるため、オブジェクトは無効な状態になると思います。
エンティティの新しいインスタンスを作成する前にIDを取得するには、アーキテクチャをどのように実装する必要がありますか?
ここでの実用的なアプローチは、ランダムIDを使用し、エンティティをインスタンス化する前にそれらを生成することです。GUIDは一般的な選択です。
そして、あなたが尋ねる前に:いいえ、あなたはGUIDを使い果たすことはありません:-)
何らかの理由でシーケンシャルIDを使用する必要がある場合でも、次のオプションがあります。
シーケンシャルIDの両方のアプローチでは、エンティティの作成を開始する前にDBラウンドトリップが必要であることに注意してください。これが、ランダムIDが通常より単純である理由です。したがって、可能であれば、ランダムIDを使用してください。
もう1つの可能性は、作成時にIDがないという事実に耐えることですが、DBでの挿入操作が成功した場合に限ります。私の経験では、これによりエンティティの作成が使いにくくなるため、回避します。しかし、非常に単純なケースでは、それは有効なアプローチかもしれません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加