青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Javen-Studio 咖啡小屋

http://javenstudio.org - C++ Java 分布式 搜索引擎
Naven's Research Laboratory - Thinking of Life, Imagination of Future

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  24 隨筆 :: 57 文章 :: 170 評論 :: 4 Trackbacks

6           SQL集成(SQL Integration

.NET 語言級集成查詢可以用來直接查詢關系型的數(shù)據(jù)存儲(relational data stores),而不用離開本地編程語言(local programming language)的語法或編譯時環(huán)境(the syntax or compile-time environment)。這個技巧(This facility),代碼名叫 DLinqcode-named DLinq),把 SQL schema 信息的集成(the integration of SQL schema information)的優(yōu)勢帶入了(takes advantage of CLR 元數(shù)據(jù)(metadata)。這個集成(integration)把 SQL 表(table)和視圖(view)的定義編譯進 CLR 類型,這樣能夠從任何語言上訪問。

 

DLinq 定義了兩個核心的屬性(two core attributes),[Table] [Column],它們指出(indicate)了哪個 CLR 類型和屬性(which CLR types and properties)是符合(correspond to)外部的 SQL 數(shù)據(jù)(external SQL data)。[Table] 屬性能被應用于(applied to)一個類并聯(lián)合(associates CLR 類型和一個指定的(named SQL 表或視圖。這兩個屬性都是參數(shù)化的(parameterized),以允許 SQL 型的元數(shù)據(jù)(SQL-specific metadata)得以保留(retained)。舉例來說,考察下面這段 SQL schema 的定義:

 

create table People (
    Name nvarchar(
32primary key not null
    Age 
int not null
    CanCode bit not 
null
)

create table Orders (
    OrderID nvarchar(
32primary key not null
    Customer nvarchar(
32) not null
    Amount 
int
)

 

與之對等(equivalent)的 CLR 定義看起來如下:

 

[Table(Name="People")]
public class Person {
  [Column(DbType
="nvarchar(32) not null", Id=true)]
  
public string Name; 

  [Column]
  
public int Age;

  [Column]
  
public bool CanCode;
}


[Table(Name
="Orders")]
public class Order {
  [Column(DbType
="nvarchar(32) not null", Id=true)]
  
public string OrderID; 

  [Column(DbType
="nvarchar(32) not null")]        
  
public string Customer; 

  [Column]
  
public int? Amount; 
}

 

通過這個例子注意到,允許為 null nullable)的 column 映射到(map toCLR 里的允許為 null 的類型(允許為 null 的類型首次出現(xiàn)在 .NET Framework version 2),對 SQL 類型來說沒有一個與之一一對應的(a 1:1 correspondence withCLR 類型(比如nvarchar, char, text),原始的 SQL 類型在 CLR metadata 里被保留。

 

為發(fā)行一個查詢而不是一個關系型存儲(issue a query against a relational store),LINQ 模式的 Dlinq 實現(xiàn)把查詢從它的表達樹(expression tree)轉(zhuǎn)換并編成(translates …form into)一個 SQL 表達試和適合遠程賦值(suitable for remote evaluation)的 ADO.NET DbCommand 對象。例于考察如下簡單的查詢:

 

// establish a query context over ADO.NET sql connection
DataContext context = new DataContext(
     
"Initial Catalog=petdb;Integrated Security=sspi");

// grab variables that represent the remote tables that 
// correspond to the Person and Order CLR types
Table<Person> custs = context.GetTable<Person>();
Table
<Order> orders   = context.GetTable<Order>();

// build the query
var query = from c in custs, o in orders
            where o.Customer 
== c.Name
            select 
new 
                       c.Name, 
                       o.OrderID,
                       o.Amount,
                       c.Age
            }


// execute the query
foreach (var item in query) 
    Console.WriteLine(
"{0} {1} {2} {3}"
                      item.Name, item.OrderID, 
                      item.Amount, item.Age);

 

DataContext 類型提供了一個輕量級的轉(zhuǎn)換器(lightweight translator),它的工作是把標準查詢操作符(standard query operators)轉(zhuǎn)換成 SQLDataContext 使用現(xiàn)有的 ADO.NET IdbConnection 來訪問存儲(accessing the store),能夠使用一個確定(established)的ADO.NET 連接對象或者一個可以用來創(chuàng)建一個連接的連接字符串(a connection string)的任一個來初始化(initialized)。

 

GetTable 方法提供 IEnumerable 兼容的變量(IEnumerable-compatible variables),能夠被用在查詢表達式(query expressions)里來代表(represent)遠程的表或視圖(the remote table or view)。調(diào)用 GetTable 不會導致任何與數(shù)據(jù)庫的交互(interaction),更準確的說(rather)它們扮演(representthe potential 通過時用查詢表達式來與遠程的表或視圖相配合(interact with)。在我們上面的例子中,查詢不會對存儲(store)發(fā)送傳輸?shù)挠绊懀?/SPAN>get transmitted to),直到程序迭代出(iterates over)查詢表達式為止,在 C# 中使用 foreach 語句也是如此(in this case)。當程序開始迭代完成(iterates over)查詢時,DataContext 機構(gòu)(machinery)把查詢表達式樹(expression tree)轉(zhuǎn)換成要發(fā)送給存儲(sent to the store)的如下所示的 SQL 語句:

 

SELECT [t0].[Age], [t1].[Amount], 
       [t0].[Name], [t1].[OrderID]
FROM [Customers] AS [t0], [Orders] AS [t1]
WHERE [t1].[Customer] 
= [t0].[Name]

 

需要重點注意的是通過在本地編程語言(local programming language)中直接(directly)內(nèi)建查詢能力(building query capability),開發(fā)人員可以獲得關系模型(the relational model)的完全能力(full power),而不用不得不靜態(tài)地(statically)將關聯(lián)烘烤進(bake the relationships intoCLR 類型中。成熟的 O/R 映射(Full-blown object/relational mapping)技術(shù)還能夠為那些希望它泛函性(functionality)的用戶利用(take advantage of)這個核心查詢能力(core query capability)。

 

 

 

 

 

待續(xù), 錯誤難免,請批評指正,譯者Naven 2005-10-24

posted on 2005-10-30 19:50 Javen-Studio 閱讀(605) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            蜜臀av一级做a爰片久久| 亚洲国产成人午夜在线一区| 亚洲人午夜精品| 欧美经典一区二区三区| 亚洲精品日韩在线观看| 亚洲国产精品视频一区| 欧美精品在线一区二区三区| 中国av一区| 亚洲欧美日韩一区| 国产一区在线播放| 欧美黄色精品| 欧美日韩国产一区二区三区| 性18欧美另类| 久久久青草婷婷精品综合日韩| 91久久精品一区二区三区| 亚洲人午夜精品免费| 国产精品自拍视频| 免费观看久久久4p| 久久精品视频导航| 亚洲国产精品黑人久久久| 欧美日韩午夜激情| 久久狠狠婷婷| 欧美精品久久久久久久久老牛影院| 99在线|亚洲一区二区| 亚洲欧美一区二区激情| 亚洲激情亚洲| 亚洲免费一区二区| 亚洲精品1区2区| 亚洲天堂成人在线视频| 亚洲欧洲日产国产综合网| 亚洲图片在线| 亚洲精品久久久久久久久久久| 亚洲在线免费视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 先锋资源久久| 亚洲靠逼com| 欧美资源在线观看| 亚洲免费影视| 欧美国产第一页| 久久婷婷国产综合尤物精品| 欧美日韩另类一区| 欧美成人精品在线| 国产色婷婷国产综合在线理论片a| 亚洲国产精品成人va在线观看| 国产精品一级二级三级| 99热免费精品| 亚洲精品中文字幕有码专区| 久久精品123| 西西裸体人体做爰大胆久久久| 欧美激情一区二区三区 | 亚洲裸体俱乐部裸体舞表演av| 久久不见久久见免费视频1| 亚洲午夜精品久久| 欧美日本精品| 亚洲国产日韩精品| 在线观看视频免费一区二区三区| 亚洲精品孕妇| 狼人社综合社区| 老司机午夜精品视频在线观看| 国产精品一区一区| 亚洲一区二区网站| 亚洲综合清纯丝袜自拍| 欧美手机在线视频| 99亚洲视频| 亚洲免费在线| 国产精品美女一区二区| 亚洲一区在线播放| 欧美亚洲免费| 国产欧美在线观看一区| 欧美亚洲系列| 噜噜噜在线观看免费视频日韩| 国产亚洲福利一区| 久久精品女人天堂| 免费成人黄色片| 亚洲欧洲午夜| 欧美日韩人人澡狠狠躁视频| av不卡免费看| 性色av一区二区三区在线观看| 国产精品视频免费观看www| 午夜久久tv| 免费观看成人| 91久久国产综合久久| 欧美性猛交xxxx免费看久久久 | 免费成人毛片| 亚洲激情中文1区| 欧美日韩免费观看一区三区| 欧美一区二区视频在线| 国产一区二区三区视频在线观看| 久久av一区二区三区| 欧美黑人多人双交| 一本一本a久久| 国产精品一区二区久久国产| 久久精品国产99精品国产亚洲性色| 蜜臀91精品一区二区三区| 99国产精品久久| 国产老肥熟一区二区三区| 久久久亚洲欧洲日产国码αv| 亚洲欧洲综合另类| 亚洲一区二区在线播放| 国内精品国产成人| 欧美高清不卡| 性欧美大战久久久久久久免费观看 | 国产中文一区二区三区| 欧美激情在线有限公司| 亚洲视频免费在线| 韩日成人av| 久久精品国产综合| 亚洲网站视频福利| 韩日成人av| 欧美午夜片欧美片在线观看| 久久精品免视看| 亚洲一区三区电影在线观看| 欧美国产激情| 久久久91精品国产一区二区三区 | 欧美激情一二三区| 欧美在线亚洲| 亚洲深夜福利| 亚洲国产精品一区| 免费国产自线拍一欧美视频| 亚洲欧美制服另类日韩| 亚洲精品视频免费| 在线电影一区| 国产在线播精品第三| 国产精品地址| 欧美日韩精品二区第二页| 久久天堂精品| 久久精品在线视频| 亚洲中午字幕| 亚洲视频在线一区观看| 亚洲精品一二| 亚洲另类自拍| 亚洲国产精品第一区二区| 麻豆国产精品一区二区三区| 久久久亚洲国产天美传媒修理工| 亚洲欧美卡通另类91av| 一区二区三区精品久久久| 亚洲毛片在线看| 亚洲免费不卡| 亚洲美女在线看| 亚洲美女淫视频| 一本大道久久a久久精品综合| 亚洲三级影院| 亚洲免费观看高清完整版在线观看| 亚洲电影欧美电影有声小说| 娇妻被交换粗又大又硬视频欧美| 亚洲在线播放电影| 久久精品视频在线看| 久久国产精品黑丝| 久久精品中文字幕免费mv| 久久riav二区三区| 久久久久国产免费免费| 久久综合网hezyo| 欧美成熟视频| 亚洲激情六月丁香| 日韩图片一区| 在线视频你懂得一区| 亚洲综合导航| 久久九九热免费视频| 久热爱精品视频线路一| 欧美成人精品一区二区三区| 欧美理论电影在线观看| 国产精品国产三级国产专播精品人| 国产精品成人v| 好吊色欧美一区二区三区视频| 一区二区在线看| 99天天综合性| 久久av一区二区三区亚洲| 麻豆精品视频在线观看| 亚洲人成在线播放网站岛国| 亚洲一区一卡| 久久综合中文色婷婷| 欧美三区免费完整视频在线观看| 国产欧美精品国产国产专区| 亚洲第一狼人社区| 亚洲色图在线视频| 久久久久看片| 亚洲精品在线免费| 欧美一区二区三区成人| 欧美高清视频www夜色资源网| 国产精品久久久久久超碰| 狠狠色噜噜狠狠色综合久| 99re在线精品| 久久视频精品在线| 一本大道av伊人久久综合| 午夜激情综合网| 亚洲高清资源| 久久成人人人人精品欧| 欧美日韩在线视频一区| 亚洲第一精品影视| 欧美一区=区| 最新日韩在线| 久久国产毛片| 国产精品入口尤物| 一区二区91| 免费中文字幕日韩欧美| 亚洲欧美日韩综合国产aⅴ| 欧美欧美天天天天操| 在线成人中文字幕| 欧美在线91| 亚洲一区二区三区国产|