编辑:以下问题已在实体框架 6 中修复。
运行下面的代码需要令人失望的 2 分 10 秒。第二次运行它需要 6.5 分钟。这个问题与这个有关
Private Sub RunTest()
Dim sw As New Stopwatch
sw.Restart()
Using db As New TestDB
db.Configuration.AutoDetectChangesEnabled = False
For n = 1 To 100
For m = 1 To 100
db.Tops.Add(New Top)
Next
Next
db.SaveChanges()
End Using
MsgBox(sw.Elapsed.ToString)
End Sub
实体:
Public Class Top
Public Sub New()
MyBase.New()
One = "arerjlwkerjglwejrglwergoiwerhgiowehrowerlwelfvbwlervbowerghpiweurhgpiwuerviiervljwebbrlvjnepvjnweprvupiweurv"
Two = "w;lrjgwwergkjwervgjwelrgjhwelghlwekglwergiuwehrgwjergjwervgjwerjgnwekrngpwergjpowergllwejrnglkwerngpoierhpiiuewrpjwenrwenrv;lwenrvkjernpgpsrvpi"
End Sub
'ID'
Public Property ID As Integer
'NATIVE PROPERTIES'
Public Overridable Property One As String
Public Overridable Property Two As String
'NAVIGATION PROPERTIES'
End Class
在第二级交互中移动 Using 块并在那里调用 SaveChanges 只会使情况变得更糟。
TestDB 只是继承 DBContext 而没有任何进一步的配置。当我禁用 Top.ID 属性的数据库生成并自己提供 ID 时,性能提高了 30 倍。这个问题使得在 SQL Server Compact 中使用数据库生成的 ID 成为不可能。除了使用客户端生成的 ID 之外,还有其他解决方案吗?