「ProgrammingEntityFrameworkCodeFirst」で提案されているアーキテクチャパスに従っています。
DataAccessレイヤーとModelレイヤーがあり、どちらもVSで別々のプロジェクトを形成します。
Modelレイヤーは、ビジネスオブジェクトのクラスを保持します。DataAccessレイヤーにはModelプロジェクトへの参照があるため、各ビジネスオブジェクトのコンテキストとDbSetを作成できます。
問題は、モデル内の一部のクラスが計算を実行するためにデータレイヤーにアクセスする必要があることですが、循環参照が作成されるため、モデルプロジェクトでDataAccessレイヤーを参照できません。DataAccessレイヤーは、DbSetを作成できるように、Modelレイヤーを参照する必要があります。また、計算は読み取り専用であり、データベースに永続化されていないゲッターのみであることに注意してください。
私はこれについて何時間も探していて、有用な情報を見つけましたが、私は何か簡単なものが欠けていると思いますか?POCOクラスは単純なものを意図していますが、私のクラスは、非常に関連しているがより複雑な計算を持つものを表しています。
簡単な具体例として、TransactionクラスとAccountBalanceクラスがあります。Transactionクラスは、変化率などの表示目的で特定の日付のAccountBalanceを知る必要があります(これは単純な例です)。
パブリッククラストランザクション
{
public DateTime Date { get; set; }
public string Description { get; set; }
... etc
public double PercentageChange
{
get
{
// return TransactionAmount / AccountBalance on TransactionDate
// however Transaction has no knowledge of AccountBalance...
}
}
}
ありがとう