在我的ASP.NET MVC WebApi項目中,我有一個Repository(帶接口),它通過一個簡單的Linq SingleOrDefault命令查詢數據庫,然後將所有內容輸出到控制器。 (EF =數據庫首先針對Oracle數據庫)ASP.NET MVC WebApi&EF懶加載=永久加載?
問題是,當我打開延遲加載(通過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
)用於通過電話的WebAPI ...
你可以發佈'MEDIEN'類型的定義嗎?你使用哪個客戶端(GET,AJAX,fiddler等)? – nemesv
MEDIEN是我的Oracle DB中的一個數據庫表,具有各種列和數據類型。我使用過所有主流瀏覽器和提琴手來調用API,所有結果都一樣。 – stare