Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “错误”;数据类型ntext和nvarchar不兼容;论提交变更_C#_Sql Server_Linq To Sql - Fatal编程技术网

C# “错误”;数据类型ntext和nvarchar不兼容;论提交变更

C# “错误”;数据类型ntext和nvarchar不兼容;论提交变更,c#,sql-server,linq-to-sql,C#,Sql Server,Linq To Sql,我最近在尝试更新预先存在的记录时开始出现此错误: 在等于运算符中,数据类型ntext和nvarchar不兼容 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源 异常详细信息:System.Data.SqlClient.SqlException:数据类型ntext和nvarchar在等于运算符中不兼容 源错误: 第108行:streamEntryTable.Context.Refresh(RefreshMode.KeepCurrentVal

我最近在尝试更新预先存在的记录时开始出现此错误:

在等于运算符中,数据类型ntext和nvarchar不兼容

描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.Data.SqlClient.SqlException:数据类型ntext和nvarchar在等于运算符中不兼容

源错误:

第108行:streamEntryTable.Context.Refresh(RefreshMode.KeepCurrentValues,条目)

第109行:}

第110行:streamEntryTable.Context.SubmitChanges()

源文件:C:\Path\Genesis.Domain\Concrete\SqlGenesisRepositoryEntryPartial.cs行:110

堆栈跟踪: [SqlException(0x80131904):数据类型ntext和nvarchar在等于运算符中不兼容。]

什么会引发这样的比较?我以前已经能够在此表上执行CRUD函数

是什么引发了这种比较

编辑 linqTOsql的C#POCO:

[Table]
public class StreamEntry
{
    [HiddenInput(DisplayValue = false)]
    [Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
    public long seID { get; set; }

    [Required(ErrorMessage = "Please enter an entry URL.")]
    [Column]
    public string seUrl { get; set; }

    [Required(ErrorMessage = "Please enter an entry headline.")]
    [Column]
    public string seHeadline { get; set; }
    [Column]
    public string seBody { get; set; }
    [Column]
    public string seDescription { get; set; }
    [Column]
    public string seKeywords { get; set; }
    [Column]
    public string seTitle { get; set; }
    [Column]
    public long seOrder { get; set; }
    [Column]
    public DateTime seDateCreated { get; set; }
    [Column]
    public DateTime seDateModified { get; set; }
    [Column]
    public long StreamID { get; set; } // FK
    [Column]
    public bool AllowComments { get; set; }

    // Relationship (many entries to one stream)
    // using EntityRef<Stream> and ThisKey
    // which is "This" table FK
    private EntityRef<Stream> _Stream;
    [System.Data.Linq.Mapping.Association(Storage = "_Stream", ThisKey = "StreamID")]
    public Stream Stream
    {
        get { return this._Stream.Entity; }
        set { this._Stream.Entity = value; }
    }

    // relationship (one entry to many FieldInstances) 
    // uses EntitySet<FieldInstance> and OtherKey for the FK in FieldInstance 
    // which is the "Other" table.
    private EntitySet<FieldInstance> _FieldInstance = new EntitySet<FieldInstance>();
    [System.Data.Linq.Mapping.Association(Storage = "_FieldInstance", OtherKey = "fiStreamEntryID")]
    public EntitySet<FieldInstance> FieldInstance
    {
        get { return this._FieldInstance; }
        set { this._FieldInstance.Assign(value); }
    }

}
[表格]
公共类流媒体
{
[HiddenInput(DisplayValue=false)]
[列(IsPrimaryKey=true,IsDbGenerated=true,AutoSync=AutoSync.OnInsert)]
公共长seID{get;set;}
[必需(ErrorMessage=“请输入输入URL。”)]
[专栏]
公共字符串seUrl{get;set;}
[必需(ErrorMessage=“请输入条目标题。”)]
[专栏]
公共字符串seHeadline{get;set;}
[专栏]
公共字符串seBody{get;set;}
[专栏]
公共字符串描述{get;set;}
[专栏]
公共字符串seKeywords{get;set;}
[专栏]
公共字符串seTitle{get;set;}
[专栏]
公共长序列{get;set;}
[专栏]
公共日期时间{get;set;}
[专栏]
公共日期时间已修改{get;set;}
[专栏]
公共长流ID{get;set;}//FK
[专栏]
公共布尔允许元素{get;set;}
//关系(多个条目到一个流)
//使用EntityRef和ThisKey
//哪个是“这个”表FK
私有实体引用流;
[System.Data.Linq.Mapping.Association(Storage=“\u Stream”,ThisKey=“StreamID”)]
公共溪流
{
获取{返回此。\u Stream.Entity;}
设置{this.\u Stream.Entity=value;}
}
//关系(一个条目到多个FieldInstance)
//在FieldInstance中为FK使用EntitySet和OtherKey
//哪一张是“另一张”桌子。
私有EntitySet _FieldInstance=新EntitySet();
[System.Data.Linq.Mapping.Association(Storage=“\u FieldInstance”,OtherKey=“fiStreamEntryID”)]
公共实体集字段实例
{
获取{返回此。\u FieldInstance;}
设置{this._FieldInstance.Assign(value);}
}
}
StreamEntry表定义

seID bigint notnull

seUrl nvarchar(255)notnull

seHeadline nvarchar(255)notnull

seBody ntext可为空

seDescription nvarchar(255)可为空

SENVARCHAR(255)可为空

seTitle nvarchar(255)可为空

seOrder bigint notnull

已创建日期时间notnull

已修改日期时间notnull

StreamID bigint notnull

AllowComments位不为空

Edit2-有关错误的更多详细信息
如果
seBody
表单字段为空,我可以成功地
SubmitChanges()
。如果我向
seBody
添加文本,它将正确更新。但是,从这一点来看,任何试图
提交更改()的尝试都会返回上述错误。

感谢您在我的问题评论中提供的所有讨论和信息。初步解决方案是将
ntext
字段更改为
nvarchar(MAX)
字段。这解决了所有的错误。这并不意味着,一旦我了解了如何使用l2sprof.com之类的工具来查看生成的SQL,我就不会再讨论这个问题


但是,目前,这个问题是通过使用
nvarchar(MAX)

来解决的。谢谢您在我的问题评论中提供的所有讨论和信息。初步解决方案是将
ntext
字段更改为
nvarchar(MAX)
字段。这解决了所有的错误。这并不意味着,一旦我了解了如何使用l2sprof.com之类的工具来查看生成的SQL,我就不会再讨论这个问题


但是,目前,这个问题是通过使用
nvarchar(MAX)

解决的,表模式是否更改了?听起来你的一个字段类型改变了。你的查询和表结构是什么?@leppie:请进一步解释…@Coding Gorilla-是的。。。数据库中的表已更改,linq使用的POCO表对象也已更改。。。但是这些变化反映在数据库中,而C#code.LINQ-to-SQL(AFAIK)不支持“POCO”,因此我不确定您是否只是在混用术语。但这听起来确实有点不同步。但是如果没有看到一些代码和模型,就很难说了。表模式是否发生了变化?听起来你的一个字段类型改变了。你的查询和表结构是什么?@leppie:请进一步解释…@Coding Gorilla-是的。。。数据库中的表已更改,linq使用的POCO表对象也已更改。。。但是这些变化反映在数据库中,而C#code.LINQ-to-SQL(AFAIK)不支持“POCO”,因此我不确定您是否只是在混用术语。但这听起来确实有点不同步。但是如果没有看到一些代码和模型,就很难说了。如果您真的需要使用文本数据,这是正确的方法