entity framework中的HierarchyID不起作用

我们正在为我们的应用程序使用基于entity framework模型的WCF数据服务。

在这里,我们需要添加一个类型为HierarchyId的列的表。 当我将该表添加到EDMX文件时, HierarchId列不会出现在类文件中。

我该怎么做才能使用HierarchyID ? 我读到Entity Framework不支持HierarchyID ,那么我该如何实现呢?

您始终可以将HierarchyId转换为其字符串表示forms – 类似于/1/3/4/1 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 1/3/4/1这样的字符串解析为HierarchyId类型 – 使用HierarchyId::Parse(string)或通常的CAST(string as HierarchyId)方法来执行此操作。

如果您使用计算列,请记住,您还需要在您的属性上使用DatabaseGenerated数据注释,如下所示:

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

查看此文章了解更多信息: entity framework代码第一个计算属性