程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 3.0入門系列(三)(2)

C# 3.0入門系列(三)(2)

編輯:關於C語言

Table類是dlinq中定義的,這裡他用了一個范性的概念,類似於C++中的模板。但C#和C++還是有區別,C++的泛型模板類似替換,只是編譯時用實際類型進行替換,因此對任何類型都可以,但是C#的泛型是在虛擬機級別上的實現,因此在編譯時會進行類型檢查(引)。Order, Product和OrderDetail等,都是sqlmetal程序根據數據庫裡對應的表,自動產生的類。也就是class和table是一一對應的。而這樣也恰恰實現了object和data的對等。讓我們去看看Order的定義吧。我這裡只貼出部分。 只簡單介紹幾個點,更加詳細內容我會在進介階段解釋,包括inheritance。 

[Table(Name = "Orders")]
public partial class Order : System.Data.DLinq.INotifyPropertyChanging, System.ComponentModel.INotifyPropertyChanged
{
 private int _OrderID;
 private string _CustomerID;
 private System.Nullable<int> _EmployeeID;
…………
 public Order() …{
  this._OrderID = default(int);
  this._OrderDetails = new EntitySet<OrderDetail>(new Notification<OrderDetail>(this.attach_OrderDetails), new Notification<OrderDetail>(this.detach_OrderDetails));
  this._Customer = default(EntityRef<Customer>);
  this._Employee = default(EntityRef<Employee>);
  this._Shipper = default(EntityRef<Shipper>);
 }
 [Column(Storage = "_OrderID", DBType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDBGenerated = true)]
 public int OrderID …{
  get …{
   return this._OrderID;
  }
 }
}

因為影射文件是自動產生的,並不需要我們自己去手動制造,節約了我們大量勞動力。在這裡,我們可以看到Order 類必須從兩個接口繼承,而且還要去實現接口裡定義的方法。它還定義了一些私有的變量,這些似乎和數據表裡字段沒有關系。其實,它在Property裡描述著呢。dlinq會為每個數據表的字段定義一個對應Property,然後,會在其上加上attribute,如

[Column(Storage = "_OrderID", DBType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDBGenerated = true)]

用來描述該Property對應數據表那個字段(Storage ),是什麼類型(DBType ),是否主鍵(IsPrimaryKey ),是否自動增(IsDBGenerated )等。在這裡,我們暫時先不要對這個文件進行修改,等你對它比較熟悉了之後,你就可以用它自己定義繼承,比如product下面還有好多種product呢。我將會在進介中介紹。

有了影射文件後,你是不是躍躍欲試,急於想創建一個自己的linq project了呢?在你安裝了linq prevIEw後,選擇

file->new->Project. 你會發現比平時多了個選項。如圖所示。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved