リポジトリ クラスの「GetById」メソッドからロードされるモデル クラスがあります。このエンティティに追加のプロパティを追加する必要があります。これらはデータベースには保存されませんが、サービス クラスによって計算されます。何かのようなもの:
public class MyEntity
{
public int ThingId { get; set; };
public string ThingName { get; set; }
// Set from the service
public int WooFactor { get; set; }
}
public class WooFactorGenerator
{
public int CalculateWooFactor(MyEntity thing); // Hits other services and repo's to eventually determine the woo factor.
}
// Code to get a "MyEntity":
var myEntity = repo.GetById(1);
var gen = new WooFactorGenerator();
myEntity.WooFactor = gen.CalculateWooFactor(myEntity);
したがって、MyEntity オブジェクトをロード/サチュレートするには、データベースからロードし、ジェネレーターを呼び出して「ウー ファクター」(エヘム) を決定する必要があります。アーキテクチャの観点から、このコードはどこに行くべきですか? 現在の考え:
1) リポジトリ内: ここに追加すると、リポジトリに責任を押し付けすぎているように感じます。
2) 「MyEntity」クラス。アクセス時に WooFactor を遅延ロードするコードをここに追加します。これにより、MyEntity に多くの依存関係が追加されます。
3) 別のサービス クラス - やり過ぎで不必要に思えます。