Linq To Sql進階系列(六)用object的動態查詢與保存log篇

作者: Tom Song  來源: 博客園  發布時間: 2008-09-27 12:01  閱讀: 10215 次  推薦: 0   原文鏈接   [收藏]  
 

系列文章導航:

Linq To Sql進階系列(一)從映射講起

Linq To Sql進階系列(二)M:M關系

Linq To Sql進階系列(三)CUD和Log

Linq To Sql進階系列(四)User Define Function篇

Linq To Sql進階系列(五)Store Procedure篇

Linq To Sql進階系列(六)用object的動態查詢與保存log篇

Linq To Sql進階系列(七)動態查詢續及CLR與SQL在某些細節上的差別

 

動態的生成sql語句,根據不同的條件構造不同的where字句,是拼接sql 字符串的好處。而Linq的推出,是為了彌補編程中的 Data != Object 的問題。我們又該如何實現用object的動態查詢呢?

1,用object的查詢是什么?
我們可以簡單的舉這么一個例子。我們到公安局查找一個人。首先,我們會給出他的一些特征,比如,身高多少,年齡多少,性別,民族等。那么,我們把這個人的一些特征輸入電腦。我們希望,電腦能給我們返回這個人的信息。而實際上,有相同特征的人太多了,常常返回一個集合。那讓我們把這個過程抽象到程式里。我們需要new出來一個對象。這個對象包含了我們能知道的基本信息。而后,把這個對象傳給Linq To Sql,等待返回結果。

根據這些基本的需求,我們來定義下面的函數,為了實現這個函數對任何實體都是有用的,我們把它定義為generic的。為了不破壞Linq To Sql延遲加載的規矩,我們把它的返回類型定義為IQueryable。如下:

public IQueryable<TEntity> Find<TEntity>(TEntity obj) where TEntity : class

思路出來了,先new出來一個對象,然后把對象傳給這個函數,我們渴望它能返回與這個對象匹配的結果集。為了讓它和DataContext有關系,我們把這個函數放到DataContext的partial類里。鼠標右擊Linq To Sql文件,選擇view code,這個時候,vs會為你創造一個DataContext的partial類,其擴展名比影射文件少了中間的desiger。大家要注意,你如果想自己修改影射文件,請放到這個文件里。這樣當影射code被刷新時,才不會沖掉你自己的修改。先大體描述下我們的思路。

NorthwindDataContext db = new NorthwindDataContext();
//先new出一個對象            
Customer c = new Customer();
//添入我們知道的最基本的信息,可以從ui獲得
c.City = "London";
c.Phone 
= "23236133";
//call函數find返回結果
var q = db.Find<Customer>(c);

 

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()