У меня есть следующий код (база данных SQL Server Compact 4.0):
Dim competitor=context.Competitors.Find(id)
Когда я просматриваю это, метод Find принимает 300 + ms для извлечения участника из таблицы всего из 60 записей.
Когда я меняю код на:
Dim competitor=context.Competitors.SingleOrDefault(function(c) c.ID=id)
Затем конкурент находится всего за 3 мс.
Класс конкурента:
Public Class Competitor
Implements IEquatable(Of Competitor)
Public Sub New()
CompetitionSubscriptions = New List(Of CompetitionSubscription)
OpponentMeetings = New List(Of Meeting)
GUID = GUID.NewGuid
End Sub
Public Sub New(name As String)
Me.New()
Me.Name = name
End Sub
'ID'
Public Property ID As Long
Public Property GUID As Guid
'NATIVE PROPERTIES'
Public Property Name As String
'NAVIGATION PROPERTIES'
Public Overridable Property CompetitionSubscriptions As ICollection(Of CompetitionSubscription)
Public Overridable Property OpponentMeetings As ICollection(Of Meeting)
End Class
Я определил отношение многих ко многим для CompetitionSubscriptions
и OpponentMeetings
, используя свободный API.
Свойство ID класса Competitor
- это Long, которое переводится с помощью кода First в столбец Identity с первичным ключом в datatable (SQL Server Compact 4.0)
Что здесь происходит?