HierarchyID в Entity Framework не работает - PullRequest
12 голосов
/ 30 ноября 2010

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

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

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

Ответы [ 2 ]

24 голосов
/ 30 ноября 2010

Вы всегда можете преобразовать 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) методы.

10 голосов
/ 02 августа 2011

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

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

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

...