3

我正在尝试使用 C# 中的 Linq 对数据库中的现有值进行更新。

我实例化变量:

var projectTrackingEntity = context.project_trackings.Single(pt => pt.project_id == projectId);

然后我更新操作列(它是一个NVarChar(MAX)),但我正在检查它是否已经有一个操作。如果是这样,我只是用分号添加它,例如。动作1;动作2

当我打电话时:

context.SubmitChanges();

调试时出现此错误:

System.NotSupportedException:SQL Server 不处理 NText、Text、Xml 或 Image 数据类型的比较。

我试过设置UpdateCheck = UpdateCheck.Never,但这并不能解决问题。

编辑:添加我更新动作的代码(变量“动作”是一个字符串)

var actions = projectTrackingEntity.action.Split(';');
bool equalActions = false;
foreach (string a in actions)
{
    if (string.Equals(a, action, StringComparison.CurrentCultureIgnoreCase))
    {
        equalActions = true;
        break;
    }
}
if(!equalActions)
{
    projectTrackingEntity.action = string.IsNullOrEmpty(projectTrackingEntity.action) ? //if
        action : //true
        projectTrackingEntity.action + ';' + action; //false
}

context.SubmitChanges();
4

2 回答 2

3

方法一:

为了解决这个问题,只需open the dbml file使用xml editor并设置updatecheck to Never如下:

<column canbenull="true" dbtype="Xml" name="PermissionsXml" type="System.Xml.Linq.XElement" updatecheck="Never"></column>  

方法二:

将您的字段更改为VARCHAR(max)

方法三:

将 UpdateCheck 更改为UpdateCheck.WhenChanged

我希望这对你有帮助。

于 2013-02-14T17:44:27.130 回答
0

几乎似乎您的 DAL 类在其自动检测中将该属性作为错误类型拾取?您可以手动指定该类型NVARCHAR(MAX)在设计器中,而不是它可能认为的任何其他类型吗?

于 2013-02-14T20:51:09.340 回答