asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用ASP.NET MVC 3和实体框架4.1代码首先在SQL CE 4.0中存储图像时出错大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在SQL Compact Edition(CE)数据库中存储/保存图像。

我在我的学生模型中声明为:

[column(Typename = "image")]
public byte[] Photo { get; set; }

数据库创建的照片列的图像数据类型可以在这里看到:

问题是:

当我运行应用程序,并尝试保存一张3 MB照片的学生(例如),我得到一个例外:

validationError.Errormessage = "The field Photo must be a String or array type
with a maximum length of '4000'."

SQL Server CE支持这些Data Types.在SQL Express和SQL Compact Edition(CE)之间的这个comparison中,我们通过使用图像数据类型支持SQL CE支持二进制(BLOB)存储。

形象应该做我想的工作。

我在这里做错了什么?这是一个bug吗?

注意:

我也尝试过MaxLength数据注释:

[column(Typename = "image")]
[MaxLength(int.Maxvalue)]
public byte[] Photo { get; set; }

但我得到这个例外:

Binary column with MaxLength greater than 8000 is not supported.

编辑:

我发现post发布了EF 4.1。它有以下:

好吧,我唯一可以让它工作的方式是做所描述的@L_616_3@,也就是设置DbContext.Configuration.ValidateOnSaveEnabled = false。这是一个解决方法,因为帖子建议。

解决方法

对于那些遇到这个问题的人来说,Erik Ejlskov jensen发布了 a working console application,这显示了这个bug的解决方法。正如OP所说,答案的关键部分是:
public studentContext()
    {
        // required to prevent bug - http://stackoverflow.com/questions/5737733
        this.Configuration.ValidateOnSaveEnabled = false;        
    }

已经找到了更好的解决方案。不要禁用验证。
[博客文章更新]
更新:LINQ to SQL和EF Code First fame的@DamienGuard指出,一个更好和更多的提供商不可知的解决方案是使用MaxLength而不是Typename =“ntext”。

更新2:使用[MaxLength]可防止任何验证错误,并且不需要禁用验证。

大佬总结

以上是大佬教程为你收集整理的使用ASP.NET MVC 3和实体框架4.1代码首先在SQL CE 4.0中存储图像时出错全部内容,希望文章能够帮你解决使用ASP.NET MVC 3和实体框架4.1代码首先在SQL CE 4.0中存储图像时出错所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。