使用数据类型Image的列删除数据库表

时间:2011-07-07 14:18:36

标签: c# sql-server asp.net-mvc linq-to-sql

我有一张包含这些列的表格:

  • PdfManuals:
  • Id(PK,int,not null)
  • 名称(nvarchar(150),非null)
  • ManufacturerId(int,not null)
  • ClientId(nvarchar(50),not null)
  • LanguageId(int,not null)
  • ImageSize(nvarchar(50),not null)
  • PdfName(nvarchar(150),not null)
  • 图片(图片,null)
  • Pdf(image,null)

另一张表:PdfManuals_Manufacturers

  1. Id(PK,int,not null)
  2. 名称(nvarchar(150),非null)
  3. ClientId(nvarchar(50),not null)
  4. LanguageId(int,not null)
  5. 尝试执行此操作:

    public ActionResult DeleteManufacturer(int id)
        {
            var manufacturer = _db.PdfManuals_Manufacturers.Where(x => x.Id == id).SingleOrDefault();
            var pdfManuals = _db.PdfManuals.Where(x => x.ManufacturerId == id).ToList();
    
            if (manufacturer != null)
            {
                _db.PdfManuals_Manufacturers.DeleteOnSubmit(manufacturer);
                _db.PdfManuals.DeleteAllOnSubmit(pdfManuals);
            }
            _db.SubmitChanges();
    
            return RedirectToAction("Manufacturers");
        }
    

    但是我收到了这个错误:

    The data types image and varbinary(max) are incompatible in the equal to operator.
    

    我正在使用ASP.NET MVC和LINQ-To-SQL 我不明白为什么,也许你们可以帮助我? :)

1 个答案:

答案 0 :(得分:1)

这可能是由LINQ造成的:它会检查值的实际变化(并不总是可能,因为你可以看到......)。

您可以使用UpdateCheck = UpdateCheck.Never:

子句来避免此检查
[Column(Storage="_myColumn", DbType="VarBinary", UpdateCheck=UpdateCheck.Never)]
public string myColumn
{
...
}

在列的LINQ映射中