So-net無料ブログ作成
検索選択

Entity Framework - 1 [Programming]

.NET Framework 上で動作させるアプリケーションでデータベースを扱うなら、大抵は ADO.NET を利用することになる。ただ、ADO.NET にもバリエーションがあり、微妙に異なる構文を覚えていかないとならない。


ADO.NET の古典的な利用方法はコレ。


Sub Main()
    Console.OutputEncoding = Text.Encoding.GetEncoding(932)

    Using table As New 駅データ.StationDataTable()
        Using adp As New 駅データTableAdapters.StationTableAdapter()
            adp.FillByLineCode(table, 11103)
        End Using
        For Each item In table
            Console.WriteLine(String.Format("{0}:{1}", item.station_cd, item.station_name))
        Next
    End Using
End Sub

アダプタ(StationTableAdapter)やらデータセット(StationDataTable)を別に定義することになるので、ソースコード自体は結構すっきりしている。


型付けされていない Data Set を使用するならこうなる。


Sub Main()
    Console.OutputEncoding = System.Text.Encoding.GetEncoding(932)

    Using table As New DataTable()
        Using con As New SqlClient.SqlConnection(My.Settings.駅データ)
            Using cmd As New SqlClient.SqlCommand("SELECT * FROM station WHERE line_cd=@code ORDER BY station_cd", con)
                cmd.Parameters.Add(New SqlClient.SqlParameter("@code", 11103))
                Using adp As New SqlClient.SqlDataAdapter(cmd)
                    adp.Fill(table)
                End Using
            End Using
        End Using
        For Each item In table.Rows
            Console.WriteLine(String.Format("{0}:{1}", item("station_cd"), item("station_name")))
        Next
    End Using
End Sub

Visual Basic では Using を使用するたびにネストが増えてしまうので、異様に深いネストが気になることがある。状況によっては SqlConnection や SqlCommand を使用しないことも可能だけれど、パラメータクエリを利用しようとするとどうしても長くなってしまう。


最後は Entity Framework。LINQ to Entity が利用できるのが最大の特徴。


Sub Main()
    Console.OutputEncoding = System.Text.Encoding.GetEncoding(932)

    Using ex = New 駅データEntities()
        Dim query = From x In ex.Stations Where x.line_cd = 11103 Order By x.station_cd
        For Each item In query
            Console.WriteLine(String.Format("{0}:{1}", item.station_cd, item.station_name))
        Next
    End Using
End Sub

 SQL が完全に姿を消すので個人的に一番気に入ってはいるのだけれど、既存のシステムのバージョンアップのような場合にはなかなか適用するのが難しい。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL: