2011-03-24 63 views
2
/// <summary> 
/// Deletes all data records associated with a data record ID 
/// </summary> 
/// <param name="DataID">Data ID record</param> 
public static void DeleteDataLabels(int DataId) 
{ 
    using (var dc = new ArtworkingDataContext()) 
    { 
     // Delete associated datalabels 
     var q = dc.tblArtworkDataLabels.Where(c => c.dataID == DataId); 

     if (q.Count() != 0) 
     { 
      dc.tblArtworkDataLabels.DeleteAllOnSubmit(q); 
      dc.SubmitChanges(); 
     } 
    } 
} 

如果没有记录在数据库中删除,它抛出:LINQ删除错误(C#)

异常详细信息: System.Data.SqlClient.SqlException: 文本,ntext和图像数据类型 无法进行比较或排序,但使用IS NULL或LIKE运算符时除 以外。

dc.SubmitChanges();

有点困惑这一个!

+0

您可以更改和更新的一个?听起来像是你的绑定属性中的错误。 – 2011-03-24 13:00:05

+0

您的dataId列是文本/ ntext列吗? – Tejs 2011-03-24 13:02:33

+0

这看起来类似于你的问题:[linq-problems-with-ntext-text-and-image-on-sql-server](http://stackoverflow.com/questions/1460251/linq-problems-with-ntext-文本和图像在SQL服务器) – firefox1986 2011-03-24 13:02:15

回答

2

我现在可能听起来很荒谬,但最近我的问题完全一样,而且我的研究表明我删除了我的dbml中的表并将其拖入并猜测它是什么,它的固定!因此请尝试删除您的tblArtworkDataLabels并重新创建它。

我不知道是否我的变化导致模型和我的数据库之间不同步,或者它纯粹是VS问题。

+0

谢谢,这工作!奇怪的。这很烦人,因为我知道必须将所有关联重新添加到图中 – 2011-03-24 13:05:42

2

也许你的DBML文件不再是最新的?

除此之外,你应该剖析发送到数据库的SQL,这样你就可以看到真正发生了什么。

3

尝试冒犯列在ColumnAttribute S设定UpdateCheckNever

[Column(..., UpdateCheck = UpdateCheck.Never)]