redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

Entity Framework でSQLを実行する

今回も参考サイトとあまり変わらないのですが、Entity FrameworkでSQLを実行する方法を調べてみました。

結果を入れるクラスとして、以下を用意します。

public class Book
{
    public int ID { get; set; }
    public string Title { get; set; }
    public string Author { get; set; }
} 

DB接続周りのクラスを用意します。

public class ShelfContext : DbContext
{
    public ShelfContext() {}
    public DbSet<Book> Books { get; set; }
}

SQLを実行して、結果を得ます。

// idはint型の引数で渡される想定
using (var db = new ShelfContext())
{
    string query = @"SELECT ID, Title, Author
                       FROM Books
                      WHERE ID = @ID";
    var result = db.Database.SqlQuery<Book>(query, new SqlParameter("@ID", id));
    var book = result.First(); 
}

逐語的文字列と、名前付きパラメータを使用すると結構見やすく書くことが出来ます。

SqlQueryメソッドは、SELECT文用らしいので、UPDATE/INSERT/DELETE文には、ExecuteSqlCommandメソッドを使うようです。

あんまり使わなさそうな機能ですが。ADO.NETをそのまま使用したアプリケーションの書き換えでは役に立つのかもしれません。

参考サイト

ichiroku11.hatenablog.jp