将二进制列映射到System.Data.Linq.Binary而不是byte []有什么好处?

时间:2009-09-16 08:49:17

标签: .net linq-to-sql

默认情况下,LINQ to SQL将二进制列(varbinary,image,...)映射到“System.Data.Linq.Binary”类型的属性。以这种方式处理二进制数据并不难,但您可以手动将该映射更改为'byte []',从而更容易使用二进制数据(因为您不必再​​在代码中进行转换。

这样做的缺点是什么?为什么选择二进制类型作为这些类型列的默认值。为什么二元类型甚至根本不存在?我的猜测是,由于某种原因使用二进制类型允许你“懒惰加载”二进制数据,但这只是我的猜测,我找不到任何证明这一点的文档。

其他人是否有更多相关信息?

更新:

根据this blogpost,使二进制属性延迟加载的方法是将“delay loaded”属性设置为True,这会将属性数据类型转换为Link。这表明常规二进制属性本身不会进行延迟加载。所以我的问题仍然存在:二进制文件对字节[]有什么好处?

1 个答案:

答案 0 :(得分:1)

我找到this mention here

  

二进制类型的存在是因为LINQ to   SQL无法跟踪对a所做的更改   字节[]。它只跟踪所做的更改   分配新的属性到属性   byte []到它。二进制类型是   byte []的不可变版本,就像   字符串类型是不可变的版本   炭[]。既然你无法改变   二进制类型的内容,唯一的   修改它的方法是分配你的   属性一个新的实例。