gpt4 book ai didi

c# - 使用导致错误的 Linq 更新 NVarChar(MAX) 列

转载 作者:行者123 更新时间:2023-11-30 16:19:52 24 4
gpt4 key购买 nike

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

我实例化变量:

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

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

当我打电话时:

context.SubmitChanges();

我在调试时遇到这个错误:

System.NotSupportedException: SQL Server does not handle comparison of NText, Text, Xml, or Image data types.

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

编辑:在我更新 Action 的地方添加代码(变量“action”是一个字符串)

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();

最佳答案

方法一:

要解决此问题,只需使用 xml 编辑器打开 dbml 文件,然后将 updatecheck 设置为 Never,如下所示:

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

方法二:

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

方法三:

将 UpdateCheck 更改为 UpdateCheck.WhenChanged

希望对您有所帮助。

关于c# - 使用导致错误的 Linq 更新 NVarChar(MAX) 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14880416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com