0

私には大きな問題があります。Entity Framework 5 と UnitOfWork パターン (リポジトリを使用) を使用しています。私はエンティティ オブジェクト Person を持っています (エンティティから継承し、いくつかのプロパティを持っています: 名前、姓、IdAddress (および idAddress にリンクされた仮想エンティティ アドレス)。

次のコードを使用する場合:

Person p = personRepository.FindById(5);

エンティティを正しく取得し、外部は問題ありません。仮想として宣言されたエンティティも読み込まれます。

ただし、次のコードを使用すると:

Person p = new Person();
p.IdAddress = 1;
personRepository.Add(p);
unitOfWork.commit();

エンティティ p には、Address エンティティの null 値があります。コミット後にメモリ内のエンティティを強制的に更新するにはどうすればよいですか? 助けてくれてどうもありがとう

4

2 に答える 2

3

Refresh次の方法を使用しObjectContextます。

context.Refresh(RefreshMode.StoreWins, p);

または、次を使用している場合DbContext:

context.Entry<Person>(p).Reload();
于 2013-11-02T18:27:23.393 に答える
0

私にとってうまくいったのは、ページが読み込まれる直前にリポジトリを再インスタンス化することでした。コードは異なりますがpersonRepository、Entity Framework コンテキストからオブジェクトにデータを生成する場合は、モデルがビューに送信される前に毎回これを行う必要があります。

    public ActionResult Form(int id)
    {
        _repository = new EntityFrameworkRepository<Model>(new EntityContext(), "Id");
        return View(_repository.Where(c => c.Id == id).FirstOrDefault() == null ? new Model() : _repository.Where(c => c.Id == id).FirstOrDefault());
    }
于 2015-12-02T16:50:27.213 に答える