いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

DevExpress奮闘記-060 (XPOがダイレクトSQLクエリに対応, v2010 vol.2, 新機能)


次のバージョン(v2010 vol2)にて、XPOがダイレクトにSQLを発行する機能に対応するとの事です。
個人的にやっとキターーーー!!って感じです。


実際の処理の書き方は以下のようになる模様ですね。
(以下上記ブログ記事から抜粋)


[更新処理]

public void UpdateDiscount(out int affectedRows) 
{
    affectedRows = unitOfWork1.ExecuteNonQuery("UPDATE [Northwind]" +
        ".[dbo].[Order Details] SET [Discount] = 0.15 WHERE "+
        "[UnitPrice] > 50");
}


[データ取得]

public int GetEmployeeOrdersCount(int employeeId)
{
    return (int)unitOfWork1.ExecuteScalar(string.Format(
        "SELECT COUNT(*) FROM [Northwind].[dbo].[Orders] " +
        "WHERE [EmployeeID] = {0}", employeeId));        
}
public SelectedData GetEmployeesSimpleData() 
{
    return unitOfWork1.ExecuteQuery("SELECT EmployeeID, (FirstName + ' ' " +
        "+ LastName) as Name, City, Country FROM " +
        "[Northwind].[dbo].[Employees]");
}

ADO.NETと同じメソッド名にしてありますね。


もちろん、Persistent Classを定義して、それにSQLの結果を
設定することも可能です。MyBatis (iBatis)みたいな感じ。

[NonPersistent]
public class EmployeeSimple : XPLiteObject 
{
    [Key]
    public int EmployeeID;
    public string Name;
    public string City;
    public string Country;
    public EmployeeSimple(Session session) : base(session) { }
}
public ICollection<EmployeeSimple> GetEmployeesSimple()
{
    return unitOfWork1.GetObjectsFromQuery<EmployeeSimple>("SELECT " +
        "EmployeeID, (FirstName + ' ' + LastName) as Name, City, Country " +
        "FROM [Northwind].[dbo].[Employees]");
}


取得したデータはXPDataViewに設定することで、各コントロールにバインドできるようになります。

private void Form1_Load(object sender, EventArgs e)
{
    //Fill information about the properties of a class EmployeeSimple
    xpDataView1.FillProperties(unitOfWork1.GetClassInfo<EmployeeSimple>());

    //Load the data
    xpDataView1.LoadData(GetEmployeesSimpleData());
}


次のバージョンに搭載されるみたいです。
楽しみだ。



================================
過去の記事については、以下のページからご参照下さい。