Linq to SQL errore SQL non confrontare NText, Text, Xml, o l’Immagine?

Quando cercando di fare un aggiornamento per il Linq oggetto è visualizzato il seguente messaggio di errore.

“SQL Server non consente di gestire il confronto di dati NText, Text, Xml, o l’Immagine di tipi di dati.”

C’è un campo nel database che è un campo di Testo, perché è destinata a contenere una stringa che potrebbe essere quanto di 32kb.

Dovrei cambiare il tipo di dati o c’è un lavoro di tutto in Linq potrei usare?

MODIFICA

Ho il supporto di SQL 2000, che è il motivo per cui è un campo di TESTO.

 

5 Replies
  1. 7

    Cambiarlo con un VARCHAR(max) – renderà la vita molto più facile.


    MODIFICA

    Di indicizzazione di testo completo può aiutare qui, non sono sicuro se SQL 2000, sarebbe possibile poi “cerca” sulla colonna di testo

    • Per quanto riguarda SQL 2000 che devo sostenere?
    • Che cosa succede se non posso cambiare il tipo di colonna? Sto ancora ricevendo questa eccezione, anche se UpdateCheck = UpdateCheck.Mai per la colonna in questione (tipo NText). Altre soluzioni? Essa si verifica solo quando l’aggiornamento dei dati – se il campo è null, prima l’aggiornamento e poi il codice viene eseguito correttamente. Grazie. David.
    • Indicizzazione Full-text consente solo l’uso di vari fulltext predicati, CONTAINS, etc. Non è possibile in MSSQL 2k confrontare questi tipi di colonne con =, !=, etc.
  2. 9

    si può sempre usare il metodo ToString() sulla stringa in questione che forza il client side di confronto.

    • Questo è l’approccio corretto….
    • Nel mio caso ho avuto un tipo di dati XML campo ed è stato in grado di risolvere il problema modificando il updateCheck attributo sulla colonna nel mio modello..[Colonna(Storage = “_CustomAttributes”, AutoSync = AutoSync.OnInsert, DbType = “xml”, UpdateCheck = UpdateCheck.Mai)]
  3. 1

    È possibile modificare manualmente il Controllo di Aggiornamento su “Mai” in .dbml.

    • Si prega di cercare di includere importanti bit e di essere specifico.
  4. 1

    O si potrebbe impostare UpdateCheck in codice:

            [Column(Name = "SomeXml", Storage = "_someXml", CanBeNull = true, UpdateCheck = UpdateCheck.Never)]
        public System.Xml.Linq.XDocument SomeXml { get { return _someXml; } set { _someXml = value; } }
  5. 0

    Devi cambiare TUTTI i campi della tabella di di tipo NVARCHAR(MAX) – Anche quelli che non si aggiorna.

Lascia un commento