日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

LINQ TO SQL (一):1. 对象关系设计器(O/R 设计器)

發(fā)布時間:2023/12/10 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LINQ TO SQL (一):1. 对象关系设计器(O/R 设计器) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

對象關系設計器(O/R 設計器)的作用:

  1.?提供了一個可視化設計圖面,用于創(chuàng)建基于數(shù)據(jù)庫中對象的?LINQ to SQL?實體類和關系;創(chuàng)建映射到數(shù)據(jù)庫中的對象的對象模型。

  2.?生成一個強類型?DataContext,用于在實體類與數(shù)據(jù)庫之間發(fā)送和接收數(shù)據(jù)。

  3. 可以將存儲過程和函數(shù)映射到?DataContext?方法以便返回數(shù)據(jù)和填充實體類。

  4.?提供了對實體類之間的繼承關系進行設計的能力。

?

對象關系設計器(O/R 設計器)是什么?

  —— 是個?LINQ to SQL 類和數(shù)據(jù)庫對象之間提供映射的 XX.dbml 文件,這個文件里有什么呢?——類型化的?DataContext?和實體類。

  ——?有兩個不同的區(qū)域:左側的實體窗格和右側的方法窗格。

?

打開 O/R 設計器

  1.?在項目中添加新的“LINQ to SQL 類”項

  2. 說明:?

?    a. O/R 設計器是一個簡單的對象關系映射器,因為它僅支持 1:1 映射關系,

     b. 是一個單向代碼生成器,這表示代碼文件中只反映對設計器圖面所做的更改,O/R 設計器中不會反映對代碼文件的手動更改。

     c.?在保存設計器并重新生成代碼時,將覆蓋在代碼文件中手動進行的所有更改

?

創(chuàng)建和配置 DataContext

  在向項目中添加“LINQ to SQL 類”項并打開 O/R 設計器后,空設計圖面表示一個可供配置的空?DataContext。DataContext?是使用拖動到設計圖面上的第一項所提供的連接信息進行配置的.

  1.?DataContext?類是一個 LINQ to SQL 類,它充當 SQL Server 數(shù)據(jù)庫與映射到該數(shù)據(jù)庫的 LINQ to SQL 實體類之間的管道,DataContext?類包含用于連接數(shù)據(jù)庫以及操作數(shù)據(jù)庫數(shù)據(jù)的連接字符串信息和方法。

?

創(chuàng)建映射到數(shù)據(jù)庫表和視圖的實體類

  1.?Entity?映射到數(shù)據(jù)庫表和視圖的 LINQ to SQL 類稱為“實體類”。實體類映射到記錄,而實體類的各個屬性則映射到構成一條記錄的各個列

  2.?實體類與數(shù)據(jù)庫表或視圖之間只能具有 1:1 映射關系。不支持復雜映射(例如,將一個實體類映射到多個表)。但是,可以將一個實體類映射到一個聯(lián)接多個相關表的視圖。

  3.?通過將表或視圖從“服務器資源管理器”/“數(shù)據(jù)庫資源管理器”拖動到 O/R 設計器上,除了可以創(chuàng)建用于執(zhí)行更新的?DataContext?方法以外,還可以創(chuàng)建實體類。

  

LINQ to SQL 對象模型?                        :

  1.?在 LINQ to SQL 中,用開發(fā)人員所用的編程語言表示的對象模型映射到關系數(shù)據(jù)庫的數(shù)據(jù)模型。然后就會按照對象模型來執(zhí)行對數(shù)據(jù)的操作。

      

  

  下表概括了 LINQ to SQL 對象模型中最基本的元素及其與關系數(shù)據(jù)模型中的元素的關系:

        

LINQ to SQL 實體類與數(shù)據(jù)庫表 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? (基于屬性的映射 (LINQ to SQL))

  在 LINQ to SQL 中,數(shù)據(jù)庫表由實體類表示。實體類與您可能創(chuàng)建的任何其他類相似,只不過對實體類進行批注的方法是使用將該類與數(shù)據(jù)庫表關聯(lián)的特殊信息。您需通過向類聲明中添加自定義屬性 (TableAttribute) 來進行這種批注,如下面的示例所示:LINQ to SQL 僅支持單表映射關系即,實體類必須只映射到一個數(shù)據(jù)庫表,且無法同時將數(shù)據(jù)庫表映射到多個類。

  您可以使用?TableAttribute?屬性 (Attribute) 的?Name?屬性 (Property) 來指定表名稱,并可以選擇使用架構名稱來限定表名稱。如果您未使用?Name?屬性指定名稱,則假定表名稱與類名相同。

?

[Table(Name = "Customers")]
public class Customerzz
{
public string CustomerID;
// ...
public string City;
}

  只有聲明為表的類(即實體類)的實例才能保存到數(shù)據(jù)庫中。

LINQ to SQL 類成員與數(shù)據(jù)庫列

  除了將類與表關聯(lián)以外,您還需指定字段或?qū)傩詠肀硎緮?shù)據(jù)庫列。為此,LINQ to SQL 定義了?ColumnAttribute?屬性,如下面的示例所示:

?

[Table(Name = "Customers")]
public class Customer
{
[Column(IsPrimaryKey = true)]
public string CustomerID;
[Column]
public string City;
}

?

  只有映射到列的字段和屬性才能持久保存到數(shù)據(jù)庫中,從數(shù)據(jù)庫中也只能檢索這樣的字段和屬性。那些未聲明為列的字段和屬性被視為應用程序邏輯的瞬態(tài)部分。

LINQ to SQL 關聯(lián)與數(shù)據(jù)庫外鍵關系

  在 LINQ to SQL 中,數(shù)據(jù)庫關聯(lián)(如外鍵到主鍵關系)是通過應用?AssociationAttribute?屬性表示的。在下面的代碼段中,Order?類包含具有?AssociationAttribute?屬性 (Attribute) 的?Customer?屬性 (Property)。此屬性 (Property) 及其屬性 (Attribute) 為?Order?類提供了與?Customer?類的關系。

  下面的代碼示例顯示了?Order?類中的?Customer?屬性 (Property)。

?

[Association(Name="FK_Orders_Customers", Storage="_Customer", ThisKey="CustomerID", IsForeignKey=true)]
public Customer Customer
{
get
{
return this._Customer.Entity;
}
set
{
Customer previousValue = this._Customer.Entity;
if (((previousValue != value)
|| (this._Customer.HasLoadedOrAssignedValue == false)))
{
this.SendPropertyChanging();
if ((previousValue != null))
{
this._Customer.Entity = null;
previousValue.Orders.Remove(this);
}
this._Customer.Entity = value;
if ((value != null))
{
value.Orders.Add(this);
this._CustomerID = value.CustomerID;
}
else
{
this._CustomerID = default(string);
}
this.SendPropertyChanged("Customer");
}
}
}

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的LINQ TO SQL (一):1. 对象关系设计器(O/R 设计器)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。