2009-09-16 27 views
2

默認情況下,LINQ to SQL將二進制列(varbinary,image,...)映射到類型爲「System.Data.Linq.Binary」的屬性。以這種方式處理二進制數據並不困難,但是您可以手動將該映射更改爲'byte []',使得使用二進制數據更容易(因爲您不必再​​將其轉換爲代碼)將二進制列映射到System.Data.Linq.Binary而不是byte []會有什麼好處?

這樣做的缺點是什麼?爲什麼二進制類型被選爲這些類型列的默認值?爲什麼二進制類型甚至存在?我的猜測是,由於某種原因使用二進制類型可以讓你「懶惰負荷」的二進制數據,但是這只是我的猜測,我無法找到證明了這一點的任何文檔

沒有任何人有任何關於它的更多信息

更新:?

根據this blogpost,進行Binary屬性延遲加載的方法是將「delay loaded」屬性設置爲True,將屬性數據類型轉換爲Link。這將表明一個常規的Binary屬性本身不會執行延遲加載。所以我的問題仍然存在:二進制文件對字節[]有什麼好處?

回答

1

我發現this mention here

二進制類型的存在是因爲LINQ到SQL 無法跟蹤到 的byte []所做的更改。它只跟蹤 到屬性,當您分配一個新的 字節[]的變化。二進制類型是 不變的byte []版本,如 字符串類型是 char []的不可變版本。由於您無法更改二進制類型的 內容,因此修改它的唯一方法是將 屬性指定爲新實例。

相關問題