默认情况下,LINQ to SQL将二进制列(varbinary,image,...)映射到“System.Data.Linq.Binary”类型的属性。以这种方式处理二进制数据并不难,但您可以手动将该映射更改为'byte []',从而更容易使用二进制数据(因为您不必再在代码中进行转换。
这样做的缺点是什么?为什么选择二进制类型作为这些类型列的默认值。为什么二元类型甚至根本不存在?我的猜测是,由于某种原因使用二进制类型允许你“懒惰加载”二进制数据,但这只是我的猜测,我找不到任何证明这一点的文档。
其他人是否有更多相关信息?
更新:
根据this blogpost,使二进制属性延迟加载的方法是将“delay loaded”属性设置为True,这会将属性数据类型转换为Link。这表明常规二进制属性本身不会进行延迟加载。所以我的问题仍然存在:二进制文件对字节[]有什么好处?
答案 0 :(得分:1)
二进制类型的存在是因为LINQ to SQL无法跟踪对a所做的更改 字节[]。它只跟踪所做的更改 分配新的属性到属性 byte []到它。二进制类型是 byte []的不可变版本,就像 字符串类型是不可变的版本 炭[]。既然你无法改变 二进制类型的内容,唯一的 修改它的方法是分配你的 属性一个新的实例。