none
請問由LinqDataSource在Inserted時,回傳object型態的Result,如何取得資料? RRS feed

  • 問題

  • 有個問題困擾我很久了,想請問各位前輩們:

    我使用LinqDataSource做為資料的來源,當我在LinqDataSource_Inserted事件中,透過傳入的LinqDataSourceStatusEventArgs e,可以取得e.result,但這時回傳的result是object的型態,這個型態會是Linq to Sql的class,最簡單的方式就是(type)result轉型取得資料,但由於我LinqDataSource有可能去查詢許多不同的來源,因此這個type並不是固定的。

     

    由於我可以從繼承的子類別,使用泛型的方式而得知我的型態,如下:

     

    Code Snippet

    class father<T>

    {

    protected void LinqDataSource_Inserted(object sender,LinqDataSourceStatusEventArgs e)

    {

    //這裡要怎麼樣才能取e.result裡的資料呢?

    //我知道他是T型態的,但是當然不能用((T)e.result)來使用,

    }

    }

     

    class children : father<LinqToSqlClassName>

    {}

     

    我在這裡想抓到的,是每筆新增之後的Primary Key,我PK的欄位都固定叫ID,

    不知是不是有方法,能直從object型態,來強制取得他的"ID"屬性的值?

    因為它所回傳的,不是Table等資料物件,或是集合物件…小弟實在不知如何對他下手,還請知道的高手們指點指點,謝謝!

    2008年2月21日 上午 10:41

解答

  •  

    Will 保哥已協助我解決這個問題了。

     

    post在這裡提供大家參考:

     

    Code Snippet

    protected void LinqDataSource_Inserted(object sender,LinqDataSourceStatusEventArgs e)
    {

      string id = e.Result.GetType().GetProperty("ID").GetValue(e.Result, null).ToString();
    }

     

     

    2008年2月21日 下午 12:23