我正在尝试使用C#中的Linq对我的数据库中的现有值进行更新。
我实例化变量:
var projectTrackingEntity = context.project_trackings.Single(pt => pt.project_id == projectId);
然后我更新了操作列(它是NVarChar(MAX)
),但我正在检查它是否已经有一个动作。如果是这样的话,我只需要用分号添加它。动作1; 1动作
我打电话的时候:
context.SubmitChanges();
调试时出现此错误:
System.NotSupportedException:SQL Server不处理比较 NText,Text,Xml或Image数据类型。
我尝试过设置UpdateCheck = UpdateCheck.Never
,但这并不能解决问题。
编辑:添加我更新动作的代码(变量“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();
答案 0 :(得分:2)
方法1:
要解决此问题仅open the dbml file
xml editor
,请按以下方式设置updatecheck to Never
:
<column canbenull="true" dbtype="Xml" name="PermissionsXml" type="System.Xml.Linq.XElement" updatecheck="Never"></column>
方法2:
将您的字段更改为VARCHAR(max)
方法3:
将UpdateCheck更改为UpdateCheck.WhenChanged
我希望这会对你有所帮助。
答案 1 :(得分:0)
几乎看起来你的DAL类在自动检测中选择了属性为错误类型?您是否可以在设计器中手动指定类型为NVARCHAR(MAX)
而不是其认为的任何其他类型?