实体框架中的HierarchyID不起作用

时间:2010-11-30 16:34:54

标签: c# entity-framework hierarchyid

我们正在为我们的应用程序使用基于实体框架模型的WCF数据服务。

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

我应该怎样做才能使用HierarchyID?我读到实体框架不支持HierarchyID,那么我该如何实现呢?

2 个答案:

答案 0 :(得分:24)

您始终可以将HierarchyId转换为其字符串表示形式,例如/1/3/4/1 - 并将该字符串发送到WCF数据服务。

更新:如果您将此计算的持久列添加到SQL Server表中,那么新列肯定会显示在您的EF模型中,您应该可以使用此列将其重新发送回来WCF和WCF数据服务:

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

更新#2: read the docs!您可以将/1/3/4/1之类的字符串解析为HierarchyId类型 - 使用HierarchyId::Parse(string)或通常的CAST(string as HierarchyId)方法来执行此操作。

答案 1 :(得分:10)

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

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

查看此文章了解更多信息: Entity Framework Code First Computed Properties