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

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>
            久久中文精品| 亚洲高清在线视频| 欧美 日韩 国产在线| 国产目拍亚洲精品99久久精品| 女人天堂亚洲aⅴ在线观看| 在线日韩欧美视频| 国产精品入口日韩视频大尺度| 亚洲美女av黄| 你懂的国产精品永久在线| 欧美在线视频a| 国产亚洲欧美一区二区| 欧美精品v国产精品v日韩精品| 久久国产精品99国产精| 久久国产精品久久久久久久久久| 亚洲天堂成人| 亚洲国产一区二区三区a毛片| 亚洲综合久久久久| 欧美另类综合| 久久亚洲一区二区三区四区| 一本色道久久综合狠狠躁篇怎么玩| 久久夜色精品国产亚洲aⅴ| 欧美日韩综合在线免费观看| 一区二区三区色| 一区二区三区黄色| 国产三区精品| 亚洲男女自偷自拍| 久久久久久免费| 欧美精品一区在线观看| 欧美亚洲一区二区在线观看| 亚洲国产精品久久久久秋霞不卡| 日韩视频免费观看高清完整版| 欧美xx69| 亚洲国产三级网| 国产精品igao视频网网址不卡日韩| 久久gogo国模裸体人体| 欧美激情按摩在线| 欧美一二三视频| 1000部精品久久久久久久久| 欧美激情a∨在线视频播放| 欧美一区二区日韩一区二区| 蜜月aⅴ免费一区二区三区| 亚洲日本电影在线| 一区二区欧美激情| 国产精品视频男人的天堂| 欧美日韩网站| 久久国产视频网| 久久亚洲春色中文字幕久久久| 久久精品99久久香蕉国产色戒 | 亚洲综合国产激情另类一区| 一本色道久久综合亚洲精品婷婷| 亚洲综合欧美| 先锋亚洲精品| 欧美一区二区免费观在线| 亚洲一区二区精品在线| 亚洲一区二区高清视频| 午夜免费久久久久| 一区二区三区日韩| 午夜一区不卡| 免费看av成人| 亚洲欧美激情精品一区二区| 性做久久久久久久免费看| 午夜在线精品偷拍| 亚洲国产精品久久久久久女王| 日韩性生活视频| 欧美在线日韩精品| 欧美一区二区视频观看视频| 久久av最新网址| 久久这里只精品最新地址| 亚洲国产高清在线| 91久久精品美女| 一区二区三区高清不卡| 久久精品国产清高在天天线 | 亚洲韩日在线| 嫩草成人www欧美| 久久久精品国产免费观看同学| 国产精品国产三级国产a| 伊人激情综合| 看片网站欧美日韩| 久久精品国产成人| 国产精品丝袜91| 99re66热这里只有精品4| 性久久久久久| 日韩午夜免费视频| 欧美一区二区黄| 亚洲国产精品久久久久久女王| 久久久久综合一区二区三区| 欧美刺激性大交免费视频| 午夜性色一区二区三区免费视频| 久久久久久久精| 最近看过的日韩成人| 免费日韩一区二区| 午夜免费在线观看精品视频| 欧美高清视频一区二区三区在线观看 | 欧美怡红院视频一区二区三区| 韩国成人福利片在线播放| 一区二区三区四区在线| 一区二区三区.www| 91久久精品国产91久久性色tv| 欧美激情亚洲一区| 在线一区亚洲| 久久国产精品高清| 狠狠久久五月精品中文字幕| 99视频有精品| 欧美性大战久久久久久久蜜臀| 香蕉免费一区二区三区在线观看| 久久国产精品一区二区三区| 欧美丝袜一区二区三区| 在线一区二区三区四区五区| 欧美剧在线免费观看网站| 男女激情久久| 国产综合精品| 欧美成人在线免费观看| 国产在线拍揄自揄视频不卡99| 亚洲电影观看| 国产精品亚洲а∨天堂免在线| 狠狠色狠狠色综合| 欧美有码视频| 久久夜色精品国产亚洲aⅴ | 午夜老司机精品| 一区久久精品| 久久久久88色偷偷免费| 久久黄金**| 国产精品午夜av在线| 日韩午夜av在线| 亚洲国产精品悠悠久久琪琪| 午夜精品久久久久久久99黑人| 在线亚洲精品福利网址导航| 欧美一区二区三区男人的天堂| 亚洲欧美日韩国产综合| 欧美午夜一区二区| 99精品久久| 亚洲曰本av电影| 亚洲三级视频| 一本久道久久综合婷婷鲸鱼| 国内激情久久| 国产精品久久777777毛茸茸| 欧美日韩精品一区视频| 欧美激情视频一区二区三区免费| 裸体丰满少妇做受久久99精品| 午夜国产精品视频免费体验区| 日韩亚洲欧美在线观看| 亚洲自拍三区| 亚洲一区二区在线免费观看视频| 一本一道久久综合狠狠老精东影业 | 欧美精品偷拍| 久久久久久成人| 欧美一区二区三区久久精品| 裸体丰满少妇做受久久99精品| 久久精品夜色噜噜亚洲a∨| 久久青草久久| 欧美影院午夜播放| 午夜性色一区二区三区免费视频 | 欧美日韩成人网| 午夜精品成人在线视频| 午夜精品福利在线观看| 久久精品视频在线免费观看| 蜜臀av一级做a爰片久久| 国产精品亚洲人在线观看| 一本色道久久综合亚洲精品高清 | 亚洲精品久久久久久久久久久久久 | 亚洲欧美综合另类中字| 亚洲国产精品www| 欧美不卡在线视频| 亚洲美女色禁图| 国产在线日韩| 亚洲午夜视频在线| 亚洲国产精品精华液2区45 | 亚洲在线观看视频| 欧美va天堂| 91久久精品国产| 久久裸体艺术| 亚洲欧美日韩一区二区三区在线| 欧美日韩亚洲一区| 亚洲人久久久| 国产精品一卡二卡| 一色屋精品视频在线观看网站| 日韩一区二区精品葵司在线| 久久久精品日韩欧美| 亚洲激情视频| 女人色偷偷aa久久天堂| 激情综合激情| 欧美成人一区二区三区在线观看 | 欧美在线中文字幕| 校园春色国产精品| 欧美日本在线看| 国产精品r级在线| 一本到12不卡视频在线dvd| 亚洲国产毛片完整版 | 欧美成ee人免费视频| 欧美成人一品| 欧美一区二区视频在线观看2020| 久久gogo国模裸体人体| 伊伊综合在线| 亚洲精品欧美| 国产精品久久综合| 亚洲精品国精品久久99热| 国产在线播精品第三| 免费成人黄色| 麻豆精品精华液| 亚洲欧美精品suv|