我正在从书“pro asp.net mvc3”构建体育馆应用程序。在第9章中,我必须添加图像上传功能。我更新了我的域对象“Product”并将Columns添加到我的数据库中。在这些步骤之后,作者steven sanderson建议我们需要更新实体框架概念模型,以便db和我的域对象正确映射到一起。
我的解决方案中没有sportsstore.edmx文件,因为我们从POCO对象开始,本书的源代码也缺少edmx文件?
我正在通过编辑产品上传图片来获取此错误吗?
不允许从数据类型nvarchar(max)到varbinary的隐式转换。使用CONVERT函数运行此查询。
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Data.SqlClient.SqlException:不允许从数据类型nvarchar(max)到varbinary的隐式转换。使用CONVERT函数运行此查询。
我的产品类定义为:
public class Product
{
[HiddenInput(DisplayValue = false)]
public int ProductID { get; set; }
[Required(ErrorMessage="Please enter a Product Name")]
public string Name { get; set; }
[Required(ErrorMessage="Please enter product description")]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
[Required(ErrorMessage="Please enter product price")]
[Range(0.01, double.MaxValue,ErrorMessage="Please enter positive price")]
public decimal Price { get; set; }
[Required(ErrorMessage="Please enter product category")]
public string Category { get; set; }
public byte[] ImageData { get; set; }
[HiddenInput(DisplayValue = false)]
public string ImageMimeType { get; set; }
}
我的产品表定义为
答案 0 :(得分:3)
您可以通过右键单击文件夹(例如模型)生成edmx文件=> add =>新商品=> ADO.NET实体数据模型
确实很奇怪在数据库中你的图像是二进制文件,而在代码中它是一个字符串。 我只是用谷歌搜索了这本书,我发现他们使用 varchar(50)作为imageMimeType
ps:'Description'字段也应该是nvarchar(500)