今天我一直在尝试将图像保存到数据库中,但我真的无法弄清楚。
我做了下表(Afbeeldingen
):
id:int
afbeelding1:varbinary(max)
使用 Linq-to-SQL 类导入它,为其编写一个 WCF 服务:
[OperationContract]
public void setAfbeelding(Afbeelding a)
{
dc.Afbeeldings.InsertOnSubmit(a);
dc.SubmitChanges();
}
然后在我的 xaml 页面中我尝试创建一个Afbeelding
,但我不能把Byte[]
as a varbinary
。我不知道该怎么做,而且似乎找不到任何相关信息。
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "JPEG files|*.jpg";
if (openFileDialog.ShowDialog() == true)
{
Stream stream = (Stream)openFileDialog.File.OpenRead();
Byte[] bytes = new Byte[stream.Length];
stream.Read(bytes, 0, (int)stream.Length);
string fileName = openFileDialog.File.Name;
Afbeelding a = new Afbeelding();
a.id = 1;
a.afbeelding1 = new Byte{ Bytes = bytes};
}
我希望有人能帮助我,因为我真的无法弄清楚。
先感谢您,
托马斯
编辑:解决了这个问题后,当我按下按钮时出现错误时会发生什么。
System.ServiceModel.FaultException: The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter :a. The InnerException message was 'There was an error deserializing the object of type OndernemersAward.Web.Afbeelding. The maximum array length quota (16384) has been exceeded while reading XML data. This quota may be increased by changing the MaxArrayLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader.'. Please see InnerException for more details.
at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
at OndernemersAward.EditAfbeeldingServiceReference.EditAfbeeldingServiceClient.EditAfbeeldingServiceClientChannel.EndsetAfbeelding(IAsyncResult result)
at OndernemersAward.EditAfbeeldingServiceReference.EditAfbeeldingServiceClient.OndernemersAward.EditAfbeeldingServiceReference.EditAfbeeldingService.EndsetAfbeelding(IAsyncResult result)
at OndernemersAward.EditAfbeeldingServiceReference.EditAfbeeldingServiceClient.OnEndsetAfbeelding(IAsyncResult result)
at System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)