Иерархия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