EF 4.1 執行效率

摘要: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操作.  待續...


人生到處知何似
應似飛鴻踏雪泥