私自身のプロジェクトでは、RavenDB を使用しています。仕事では、SQL Server と Entity Framework (コード ファースト) を使用しています。
そのため、ドメイン エンティティの設計は課題です。データベースの実装にまったく結び付けられていない、アプリケーション中心の DDD スタイルのアプリケーションを作成する RavenDB の機能を本当に楽しんでいるからです。
現時点では、システム内の他のエンティティを参照する GUID のコレクションを持つエンティティを永続化しようとしています。例(実際のクラスではなく、同じ概念):
public class Thing
{
public Thing()
{
this.VisibleSectionIds = new Collection<Guid>();
}
public Guid Id { get; set; }
public string Name { get; set; }
public ICollection<Guid> VisibleSectionIds { get; set; }
}
RavenDB を使用すると、データベースを再設計する必要なく、数行のコードでこれを維持できます。ID のコレクションを読み取り専用にすることもできます。
他のエンティティにマッピング プロパティを導入せずに EF で同様のことを行う方法を提案できますか (これは私の DDD アプローチを破り、N+1 の問題を引き起こす可能性があります)。EF を使用して、GUID のコレクションをデータベース内のテキスト データ型に変換し、再度変換することはできますか?