Получаете первые 255 символов поля ntext, используя LINQ to Entities?

1

Я использую LINQ to ENTITIES для извлечения данных из SQL Server, и я пытаюсь получить только первые 255 символов из одного из столбцов, тип данных которых NTEXT. Когда я пытаюсь получить ошибку:

Тип аргумента ntext недопустим для аргумента 1 функции len

Код, создающий ошибку:

Subject = (yt.Message.Length > 255) ?  yt.Message.Substring(0, 255) :  yt.Message

Есть ли простой способ получить длину, чтобы я мог ее проверить или просто получить первые 255 символов столбца NTEXT?

Попытка выполнить yt.Message.ToString().Length дает ту же ошибку.

Это сторонний БД для программного обеспечения форума, которое я использую, и поскольку я ничего не знаю о том, как работает эта система, я хочу держаться подальше от изменения какой-либо схемы.

  • 0
    Есть ли причина, по которой вы не можете использовать ToString ?
  • 0
    Очевидно, у многих других были подобные проблемы, пытаясь манипулировать значениями NTEXT. Возможно полезный пост.
Показать ещё 4 комментария
Теги:
linq
entity-framework

2 ответа

0
Лучший ответ

Не похоже, что есть способ сделать это в LINQ, но то, что я закончил, это создать обычный запрос LINQ, чтобы вытащить все данные, а затем поместить метод в ViewModel, который возвращает количество символов, которые я хочу.

public string Subject
    {
        get
        {
            return (yt.Message.Length > 255) ? yt.Message.Substring(0, 255) : yt.Message

        }
    }
-1

Вам нужно использовать представление.

CREATE VIEW MyView
AS
    SELECT  MyKey,
            LEFT(CONVERT(NVARCHAR(MAX), MyValue), 255) AS MyValueSummary
    FROM    dbo.MyTable
  • 0
    Как бы вы назвали это с помощью LINQ из системы EF 6?
  • 0
    Мой общий совет - не использовать ORM для профессиональной работы. Но если нужно, EF может читать из представлений так же легко, как и из таблиц.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню