代码之家  ›  专栏  ›  技术社区  ›  Dave Van den Eynde

将二进制列映射到system.data.linq.binary而不是byte[]有什么好处?

  •  2
  • Dave Van den Eynde  · 技术社区  · 15 年前

    默认情况下,Linq to SQL将二进制列(varbinary、image…)映射到“system.data.linq.binary”类型的属性。以这种方式处理二进制数据并不难,但是您可以手动将该映射更改为“byte[]”,使处理二进制数据更容易(因为您不再需要在代码中转换它)。

    这样做的缺点是什么?为什么选择二进制类型作为这些列类型的默认值?为什么二进制类型甚至存在?我的猜测是,出于某种原因,使用binary类型可以“延迟加载”二进制数据,但这只是我的猜测,我找不到任何文档来证明这一点。

    其他人有更多关于这方面的信息吗?

    更新:

    根据 this blogpost ,使二进制属性延迟加载的方法是将“delay loaded”属性设置为true,从而将属性数据类型转换为链接。这意味着常规二进制属性本身不会进行延迟加载。所以我的问题是:二进制文件相对于字节[]有什么好处?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Dave Van den Eynde    15 年前

    我发现 this mention here :

    二进制类型存在,因为Linq To SQL无法跟踪对 字节[]。它只跟踪所做的更改 当您分配新的 字节[对它]。二进制类型是 字节[]的不可变版本,如 字符串类型是的不可变版本 字符[]因为你不能改变 二进制类型的内容 修改它的方法是 属性新实例。