ошибка "типы данных ntext и nvarchar несовместимы" на SubmitChanges - PullRequest
1 голос
/ 17 ноября 2010

Я недавно начал получать эту ошибку при попытке обновить уже существующую запись:

Типы данных ntext и nvarchar несовместимы в операторе равенства.

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Data.SqlClient.SqlException: типы данных ntext и nvarchar несовместимы в операторе равенства.

Ошибка источника:

Строка 108: streamEntryTable.Context.Refresh (RefreshMode.KeepCurrentValues, entry);

Строка 109:}

Строка 110: streamEntryTable.Context.SubmitChanges ();

Исходный файл: C:\ Path \ Genesis.Domain \ Concrete \ SqlGenesisRepositoryEntryPartial.cs Строка: 110

Трассировка стека: [SqlException (0x80131904): типы данных ntext и nvarchar несовместимы в операторе «равно».]

Что может вызвать подобное сравнение?Ранее я мог выполнять функции CRUD для этой таблицы.

Что может вызвать это сравнение?

Редактировать

C # POCO для linqTOsql:

[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); }
    }

}

Определение таблицы StreamEntry

seID bigint notnull

seUrl nvarchar (255) notnull

seHeadline nvarchar (255) notnull

seBody ntextnullable

seDescription nvarchar (255) nullable

seKeywords nvarchar (255) nullable

seTitle nvarchar (255) nullable

seOder bigint notnull * 10491050 * seDateCreated datetime notnull

seDateModified datetime notnull

StreamID bigint notnull

AllowComments, бит notnull

Edit2 - более подробная информация об ошибке

Я могу успешно SubmitChanges(), если поле формы seBody пусто.Если я добавлю текст в seBody, он будет обновлен правильно.Но с этого момента любые попытки SubmitChanges() вернут ошибку выше.

1 Ответ

1 голос
/ 18 ноября 2010

Спасибо за все обсуждения и информацию в комментариях к моему вопросу. Предварительное решение состояло в том, чтобы изменить поле ntext на поле nvarchar(MAX). Это позаботилось обо всех ошибках. Это не значит, что я не собираюсь возвращаться к этой проблеме, когда выясню, как использовать такие инструменты, как l2sprof.com, для просмотра сгенерированного SQL.

Но пока проблема решается с помощью nvarchar(MAX).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...