6.クエリーサンプル

1.クエリー式

using (var db = new Model1())
{
    var query = from kokyaku in db.m_kokyaku
                where kokyaku.id >= 10 && kokyaku.id <= 20
                orderby kokyaku.id descending
                select kokyaku;

    foreach (var k in query)
    {
        Console.WriteLine("id={0}, name={1}, tel1={2}", k.id, k.name, k.tel1);
    }
}

 

2.ラムダ式 パターン1

using (var db = new Model1())
{
    var query = db.m_kokyaku
                .Where(x => x.id >= 10 && x.id <= 20)
                .OrderByDescending(x => x.id)
                .ToList();

    foreach (var k in query)
    {
        Console.WriteLine("id={0}, name={1}, tel1={2}", k.id, k.name, k.tel1);
    }
}

 

3.ラムダ式 パターン2

using (var db = new Model1())
{
    var query = db.m_kokyaku
                .Where(x => x.id >= 10 && x.id <= 20)
                .OrderByDescending(x => x.id)
                .Select(x => new
                {
                    x.id,
                    x.name,
                    x.tel1
                });

    foreach (var k in query)
    {
        Console.WriteLine("id={0}, name={1}, tel1={2}", k.id, k.name, k.tel1);
    }
}

 

4.テーブル連結

using (var db = new Model1())
{
    var query = from t in db.taiou_rireki
                join k in db.m_kokyaku on t.id equals k.id
                where k.sex == "1"
                select new
                {
                    t.id,
                    t.taiou_bi,
                    t.kenmei,
                    k.name,
                    k.corp_name
                };

    foreach (var k in query)
    {
        Console.WriteLine("id={0}, taiou_bi={1}, kenmei={2}, name={3}, corp_name={4}"
                            , k.id, k.taiou_bi, k.kenmei, k.name, k.corp_name);
    }

 

5.INSERT 単一行

using (var db = new Model1())
{
    var sts = new m_status
    {
        id = 5, status = "打合せ"
    };

    db.m_status.Add(sts);
    db.SaveChanges();
}

 

6.INSERT 複数行

using (var db = new Model1())
{
    m_status[] sts = new m_status[]
    {
        new m_status {id = 6, status = "会議" },
        new m_status {id = 7, status = "出張" },
    };

    db.m_status.AddRange(sts);
    db.SaveChanges();
}

 

7.DELETE 単一行

using (var db = new Model1())
{
    var sts = (from s in db.m_status
                where s.id == 4
                select s).Single();

    db.m_status.Remove(sts);
    db.SaveChanges();
}

 

8.DELETE 複数行

using (var db = new Model1())
{
    var sts = from s in db.m_status
                where s.id >= 5 && s.id <= 7
                select s;

    db.m_status.RemoveRange(sts);
    db.SaveChanges();
}

 

9.UPDATE 単一行1

using (var db = new Model1())
{
    var sts = db.m_status.Single(x => x.id == 3);

    sts.status = "保留";

    db.SaveChanges();
}

 

10.UPDATE 単一行2

using (var db = new Model1())
{
    var sts = (from s in db.m_status
                where s.id == 3
                select s).FirstOrDefault();

    sts.status = "保留";

    db.SaveChanges();
}

 

11.UPDATE 単一行3

using (var db = new Model1())
{
    var sts = new m_status()
    {
        id = 3,
        status = "保留"
    };

    db.m_status.Attach(sts);
    db.Entry(sts).State = System.Data.Entity.EntityState.Modified;
    db.SaveChanges();
}

 

12.トランザクション処理

using (var db = new Model1())
{
    ((IObjectContextAdapter)db).ObjectContext.Connection.Open();

    using (var tx = new TransactionScope())
    {
        var sts = new m_status
        {
            id = 5,
            status = "打合せ"
        };

        db.m_status.Add(sts);
        db.SaveChanges();


        m_status[] sts2 = new m_status[]
        {
            new m_status {id = 6, status = "会議" },
            new m_status {id = 7, status = "出張" },
        };

        db.m_status.AddRange(sts2);
        db.SaveChanges();

        tx.Complete();
    }
}

 

13.SQL文を直接発行

using (var db = new Model1())
{
    var q = db.Database.ExecuteSqlCommand("UPDATE m_status SET status = '出張' WHERE id = 7;");
}

 

14.パラメータークエリー

using (var db = new Model1())
{
    var sql = @"SELECT * FROM m_status WHERE id = @id";
    var param = new SqlParameter("@id", 3);
    var sts = db.Database.SqlQuery<m_status>(sql, param);

    foreach (var st in sts)
    {
        Console.WriteLine("id={0}, status={1}", st.id, st.status);
    }
}