我正在将MVC 3 Linq-to-Sql应用程序转换为MVC 5 Entity Framework 6.1。我使用Model First导入我的表。 要在MS SQL服务器中保存二进制映像: 我使用了以下内容:
public EmptyResult UploadVisionImage (IEnumerable<HttpPostedFileBase> image, string desc)
{
var httpPostedFileBases = image as HttpPostedFileBase[] ?? image.ToArray();
if (image == null || !httpPostedFileBases.Any())
return new EmptyResult();
HttpPostedFileBase file = httpPostedFileBases.First();
if (file.ContentLength > 0)
{
var vi = new VisionImage();
vi.Description = desc;
vi.FileName = file.FileName.Split('\\').Last();
vi.ContentType = file.ContentType;
// Save the full size image.
var tempImage = new byte[file.ContentLength].ToArray();
file.InputStream.Read(tempImage, 0, file.ContentLength);
vi.ImageData = new Binary(tempImage);
// Create and save the thumbnail image.
file.InputStream.Seek(0, SeekOrigin.Begin);
int thumbnailSize = Config.Current.ThumbnailSize;
vi.ThumbnailImageData = new Binary(Thumbnail.CreateThumbnail(file.InputStream, thumbnailSize, thumbnailSize));
// Commit changes.
SelectedVisit.VisionImage.Add(vi);
_visitRepository.Save();
}
return new EmptyResult();
}
我收到此错误:
cannot convert system.data.linq.binary to target type byte[]
我在旧应用程序中检查了模型,ImageData和ThunbnailImageData都是Binary,但在EF模型中它们是byte [];当我手动将它们更改为二进制时,我得到上述错误。两者都作为&#34; image&#34;存储在数据库中,我也尝试过varbinary,模型仍将它们显示为byte []。 非常感谢您的建议。