私のASP.NETMVCWebApiプロジェクトには、単純なLinq SingleOrDefaultコマンドを介してDBにクエリを実行し、すべてをコントローラーに出力するリポジトリ(インターフェイス付き)があります。(EF = Oracle DBに対する最初のデータベース)
問題は、(EDMXファイルプロパティを介して)遅延読み込みをオンにすると、getが永久に読み込まれ、応答がないことです。遅延読み込みをオフにすると、すべてが正常に機能しますか?
さらに奇妙なことに、すべてのクエリをコンソールアプリに入れて、Console.WriteLineを介してすべてを出力すると、遅延読み込みでも機能しますか?
インターフェース:
Public Interface IMedienRepository
Function [Get](id As Integer) As MEDIEN
End Interface
リポジトリ
Private db As EFEntities
Public Sub New()
db = New EFEntities
End Sub
Public Function [Get](id As Integer) As MEDIEN Implements IMedienRepository.[Get]
Dim _medien = db.MEDIEN.SingleOrDefault(Function(m) m.MEDIENNR = id)
If _medien Is Nothing Then
Throw New NotFoundException()
End If
Return _medien.SingleOrDefault()
End Function
コントローラ
Private _repository As IMedienRepository
Public Sub New()
Me.New(New MedienRepository())
End Sub
Public Sub New(repository As IMedienRepository)
_repository = repository
End Sub
Public Function GetValue(id As Integer) As MEDIEN
Try
Return _repository.Get(id)
Catch generatedExceptionName As NotFoundException
Throw New HttpResponseException(New HttpResponseMessage() With { _
.StatusCode = System.Net.HttpStatusCode.NotFound _
})
End Try
End Function
参考:クエリを直接コントローラに入力しても機能しません。
MVCビューで遅延読み込み機能を使用したいので、誰かがこの問題について知っていて、私を助けてくれるとありがたいです。
db.ContextOptions.LazyLoadingEnabled = False
Momentの回避策は、WebApiを介した呼び出しの遅延読み込みをオフ( )にすることです...