データ層とこの層を利用するクライアントコードの間に依存関係を導入することを避けようとしていますが、Mongoでこれを行おうとすると(MongoRepositoryを使用して)いくつかの問題が発生します
MongoRepositoryは、データ構造を反映するタイプを作成し、必要に応じてエンティティを継承する例を示しています。例えば。
[CollectionName("track")]
public class Track : Entity
{
public string name { get; set; }
public string hash { get; set; }
public Artist artist { get; set; }
public List<Publish> published {get; set;}
public List<Occurence> occurence {get; set;}
}
これらをクライアントコードで利用するために、Mongo固有のタイプをインターフェイスに置き換えたいと思います。例:
[CollectionName("track")]
public class Track : Entity, ITrackEntity
{
public string name { get; set; }
public string hash { get; set; }
public IArtistEntity artist { get; set; }
public List<IPublishEntity> published {get; set;}
public List<IOccurenceEntity> occurence {get; set;}
}
ただし、Mongoドライバーはこれらのインターフェイスの処理方法を知らないため、当然のことながら次のエラーが発生します。
クラスsf.data.mongodb.entities.Trackのartistプロパティの逆シリアル化中にエラーが発生しました:タイプsf.data.IArtistEntityのシリアライザーが見つかりません。---> MongoDB.Bson.BsonSerializationException:タイプsf.data.IArtistEntityのシリアライザーが見つかりません。
誰かが私がこれにどのように取り組むべきかについて何か提案がありますか?