0

我在 Sql Server 中有一些表,VarBinary(MAX)我想将文件上传到它们,我需要制作 Dbml 来制作该字段byte[],但我得到了Systm.Data.Linq.Binary.

为什么会这样以及如何将默认设置为byte[]?谢谢。

我像这样在我的 MVC 3 coroller 操作中读取文件(resourceFile是 aHttpPostedFileBase并且newFile具有字节 [])

newFile.FileContent = new byte[resourceFile.ContentLength];
resourceFile.InputStream.Read(newFile.FileContent, 0, resourceFile.ContentLength);
4

2 回答 2

1

System.Linq.Data.Binary类型是字节数组的包装器,它使包装的字节数组不可变。请参阅msdn页面。

说明不变性的示例代码:

byte[] goesIn = new byte[] { 0xff };
byte[] comesOut1 = null;
byte[] comesOut2 = null;
byte[] comesOut3 = null;

System.Data.Linq.Binary theBinary = goesIn;

comesOut1 = theBinary.ToArray();
comesOut1[0] = 0xfe;

comesOut2 = theBinary.ToArray();

theBinary = comesOut1;

comesOut3 = theBinary.ToArray();

在更改comesOut1. 包裹的 byte[]theBinary没有改变。只有在将整个 byte[] 分配给它之后theBinary,它才会改变。

无论如何,为了您的目的,您可以使用该Binary字段。正如丹尼斯在他的回答中所写的那样,为其分配一个新值。要从中获取字节数组,请使用该.ToArray()方法。

于 2013-04-29T12:27:01.300 回答
1

您也可以使用Binaryto 存储byte[],因为Binary具有来自的隐式转换byte[]

myEntity.MyBinaryProperty = File.ReadAllBytes("foo.txt");
于 2013-04-29T08:11:43.187 回答