エンティティフレームワークでPOCOクラスのアプローチにいくつかの制限がありました。なぜなら、エンティティはDbContext参照を保持せずに関連するクエリを単独で処理できないからです。プロキシはそれを個人的に参照しており、アクセスすることはできません。私が達成したいことは、以下のモデル保持フォロワーではありますが、フォロワーの代わりにフォロワーの数が必要な場合、モデルにはコンテキストが参照されないため、これをモデルで行うことはできません。それで解決策が保持されているFollowersCountは、モデルのプロパティをマップせず、リポジトリ内でクエリを実行してから設定します。これは、新しいDTOを作成せずにDTOオブジェクトを作成するように見えます。エンティティは自分のDbContextを認識していますか?
2番目のアプローチは、DbContext参照をモデルプロパティで明示的に保持しておき、マップされていない関連クエリーを実行することができます。
両方の手法の欠点は、フェッチされたモデルごとに手動で値を繰り返し設定することです。どちらのソリューションもどう思いますか?より良いアプローチはありますか?
public class Post : Entity
{
public string Title { get; set; }
[NotMapped]
public DbContext Context { get; set; }
public virtual List<User> Followers{ get; set; }
public virtual FollowersCount()
{
return //use DbContext and just execute query for count of Followers
}
}