ИерархияID в Entity Framework не работает

Мы используем службу данных WCF на основе модели Entity Framework для нашего приложения.

В этом случае нам нужно добавить таблицу со столбцом типа HierarchyId. Когда я добавляю эту таблицу в файл EDMX, столбец HierarchId не отображается в файле класса.

Что мне делать, чтобы использовать HierarchyId? Я читал, что Entity Framework не поддерживает HierarchyId, так как я могу это достичь?

Ответы

Ответ 1

Вы всегда можете преобразовать HierarchyId в его строковое представление - что-то вроде /1/3/4/1 - и отправить эту строку в службу данных WCF.

Обновление:, если вы добавите этот вычисленный столбец с сохранением в таблицу SQL Server, этот новый столбец обязательно должен появиться в вашей модели EF, и вы сможете использовать его для отправки Услуги WCF и WCF:

ALTER TABLE dbo.YourTable
ADD HierarchyString AS (your hierarchyID field).ToString() PERSISTED

Обновить # 2: прочитать документы! Вы можете проанализировать строку, подобную /1/3/4/1, в тип HierarchyId - либо использовать методы HierarchyId::Parse(string) или обычные CAST(string as HierarchyId) для этого.

Ответ 2

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

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string HierarchyString { get; set; }

Проверьте эту статью за дополнительной информацией: Первичные вычислительные свойства Entity Framework