摘要:EF 4.1 執行效率
<零散知識點>
為了提高系統執行的效率,我們必須結合SQL Server Profiler來監測EF實際訪問DB的SQL,分析是否有冗餘SQL或分析SQL的執行效能(語句本身,INDEX...).
剛接觸EF4.1 ,我們編寫繼承DbContext的類如果在構造器沒有做任何設定,EF會訪問查詢DB是否存在和訪問[EdmMetadata]表(雖然不存在此表). 我們在實際開發中肯定要忽略查詢DB是否存在與查詢[EdmMetadata]的SQL,雖然微軟是為了讓DB與MODEL進行同步.如下是例子:
Imports System.Data.Entity
Imports System.Data.Entity.Infrastructure
Public Class BookContext
Inherits DbContext
Shared Sub New()
Database.SetInitializer(Of BookContext)(Nothing)
End Sub
Public Sub New()
MyBase.New("web")
End Sub
Public Property Books As DbSet(Of Book)
Protected Overrides Sub OnModelCreating(modelBuilder As System.Data.Entity.DbModelBuilder)
MyBase.OnModelCreating(modelBuilder)
End Sub
End Class
Public Class B
Public Shared Sub Main()
Using context = New BookContext()
'Dim list = context.Set(Of Book).ToList()
Dim objBook = New Book() With {.BookId = 11, .Price = 13.1, .Title = "this is a test"}
context.Books.Add(objBook)
context.SaveChanges()
End Using
End Sub
End Class
Public Class Book
Public Property BookId As Integer
Public Property Title As String
Public Property Price As Double
End Class
請注意靜態構造器中的代碼: Database.SetInitializer(Of BookContext)(Nothing), 有了這段代碼就省略了EF多餘的DB操作. 待續...
人生到處知何似
應似飛鴻踏雪泥