私は私のプロジェクトでは2つのエンティティがあります。作業単位のリポジトリパターンでナビゲーションプロパティを更新できますか?
public class A
{
public int Id { get; set; }
public DateTime CreatedDateTime { get; set; }
public virtual B B { get; set; }
}
public class B
{
public int Id { get; set; }
public Nullable<DateTime> LastAliveTime { get; set; }
public virtual ICollection<A> A { get; set; }
}
私はEntity Frameworkを持つ作業リポジトリパターンのユニットを使用していますが、私は次の操作を行います。
stirng id = "abc";
var aService = unitOfWork.GetRepository<A>();
var ins = aService.FindBy(a => a.Id == id);
私はを更新するためにOKであることを知っていますを入力し、dbcontextを保存します。私が知っている必要があり何
は次のとおりです。
ins.B.LastAliveTime = DateTime.UtcNow;
この作品はいつもウィル?
BエンティティのLastAliveTimeを更新する正しい方法ですか?また、次のような別のリポジトリを初期化する必要がありますか?
var bService = unitOfWork.GetRepository<B>();
エンティティタイプごとにリポジトリがあるのはなぜですか? – Evk
''仮想 ''がレイジーローディングを意味すると仮定すると、それは基礎となるコンテキストの存続期間に依存します。コンテキストがまだ生きている場合、 'ins.B'を呼び出すか、または' ins.B'が既に読み込まれている場合、それは動作します。さもなければ、 'InvalidOperationException'を取得し、コンテキストが破棄されたときに' B'をロードしようとします。 – Dennis