1

ここにある例にあるように、MongoDB と C# ドライバーを使用して ASP.NET Web API プロジェクトで使用するように設計された単純なドメイン モデルを作成しようとしています。この例は、次のエンティティを示しています。

public class Entity
{
    public ObjectId Id { get; set; }

    public string Name { get; set; }
}

私の問題は、このクラスには、Visual Studio プロジェクト内で参照する必要がある MongoDB.Bson 名前空間に属する ObjectId 型の Id プロパティが含まれていることです。これで、Win RT (Windows ストア アプリ) プロジェクトでこのエンティティを使用したい場合を除いて、これで問題ありません。この場合、適切なバインディングが存在しないため、MongoDB を参照できません。

私の C# Win RT プロジェクトでは、このエンティティのプロパティを含む JSON を返す REST API から消費したいので、JSON.NET を使用した逆シリアル化でエンティティ クラスを再利用したいと考えています。

エンティティ クラスから MongoDB 依存関係を削除する最善の方法は何ですか? 代わりに Id プロパティを文字列型にするのが最善でしょうか? もしそうなら、このアプローチで私が知っておくべき影響はありますか?

4

1 に答える 1

1

はい、私はそれをstring. ただし、理想的には、WinRt アプリケーションで使用するモデルはビュー モデルであり、ネイティブの BSON データ型を使用しないと考えることができます。

ただし、このようなことを行った場合、通常はビュー モデルを公開し、オブジェクトの内部データベース表現をクライアントと共有していません。UI がより洗練された解決済みの値を必要とするため、これが必要になることがよくあります ( のようなものはObjectId、id が指す可能性のあるデータを持つほど有用ではありません)。

とにかく変換​​が非常にシンプルで高速であるため、それを にすることでstring、C# であまり失うことはありません。

または、ここBsonClassMapに記載されている を使用することを検討してください。タイプの装飾をタイプから分離し、必要な変更をサーバー上でのみ行うことができます。

于 2013-10-27T12:04:36.740 に答える