2017-01-19 10 views
0

ビジネスモデルの一部のプロパティで遅延ロードを実装したいと考えています。 ASP.NET Coreでこれを行う最良の方法は何ですか?私のモデルにデータベースコンテキストを注入し、そのプロパティが使用されたときにクエリを実行しますか?または、私のモデルでvoid LazyLoadProperty(文字列propertyName、ApplicationDbContext dbContext)のような汎用メソッドを実装し、遅延ロードされた値が必要なときはいつでもデータベースコンテキストを挿入しますか?ビジネスモデルプロパティのASP.NETコアによる遅延ロード

詳細については、.NETCoreApp1.1およびエンティティフレームワークコアを使用しています。

+0

とにかくWebアプリケーションで遅延読み込みをしたいのですが? – DavidG

+0

いくつかのプロパティは値を取得するために複数の結合で複雑なクエリを必要とするため、ほとんど必要としない値なので、必要なときにのみロードします。 – AdrienTorris

+1

https://docs.microsoft.com/en-us/ef/コア/クエリ/関連するデータ EFCで遅延読み込みについての宣伝がまだありません....そのバックログ – mvermef

答えて

1

私のビジネスモデルにデータを遅延読み込みするときは、ビジネスモデルにデータベースコンテキストを認識させ、そのプロパティのデータが 'まだ怠け者です。私はこの方法が本当にうまく機能することを知ります。

+0

あなたのビジネスモデルはデータベースコンテキストを知っていますか?データベースコンテキストをビジネスモデルにどのように渡しますか?コンストラクタによって? – AdrienTorris

+0

私は選択的な単体テストのファンですが、私は自分の開発努力をどのように配分するかについて非常に実用的です。だから私の場合、私は明示的にデータベースコンテキストへのアクセスをビジネスモデルにコード化します。コンストラクタを介して渡すことも別の選択肢であり、ビジネスモデルをDependency Injectionコンテナに登録している開発者が好むことがよくあります。 –