Sql server CLR自訂類型儲存物件

來源:互聯網
上載者:User

問:我可以在SQL Server 2005中用CLR使用者自訂類型來儲存我的業務對象嗎?

答:實現SQL CLR使用者自訂類型(UDT)非常簡單,就像給.NET類或者結構添加一些額外的片斷。其中就包括屬性(SqlUserDefinedTypeAttribute),和介面(INullable),以及一些額外的方法(Null() and Parse())。這個簡單性帶來的後果就是,一個有經驗的開發人員可以在不到5分鐘的時間裡把一個業務對象轉換為SQL CLR 使用者自訂類型。

SQL Server 2005的設計目標並不是用於物件導向的資料庫管理系統。它還是一個標準的SQL 資料庫管理系統,並且使用者自訂類型的能力也應該被當作是一種系統擴充的類型,而不是一個對象。開發人員在決定是否將現有的業務對象用作CLR UDT的時候,應該仔細權衡他們的選擇。

每次訪問一個類型的執行個體的方法或者屬性的時候,這個執行個體都應該在這個方法被訪問之前序列化。因此,這最好是依靠那些基於他們的序列化位元組的可比較的類型。開發人員應該嘗試僅僅使用那些可以自動回答問題的使用者自訂類型。例如,以下的C#類就不如使用者自訂類型:

class Product
{
  public string Name;
  public string Description;
  public decimal price;
}

如果一個查詢是針對這樣類型的欄位,每個行都必須被反序列化以回答如下的問題,“什麼產品價值10美元?”這是因為我們不能假設所有的10美元的產品都具有同樣的二進位表示。對一個大表(例如一個有上百萬產品的表)中的每個行都進行反序列化將會給效能帶來嚴重的考驗。

除了效能挑戰之外,還有標準化的問題。例如,假設這個類型,一個公司怎麼能為同樣的產品儲存兩種描述,並且還要確保產品只有一個有效價格?

最好是堅持使用那些可以回答問題,並且不會帶來反序列化負擔的類型。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.