我们正在为我们的应用程序使用基于实体框架模型的WCF数据服务。
在此我们需要添加一个类型为HierarchyId
的列的表。当我将该表添加到EDMX文件时,HierarchId
列未出现在类文件中。
我应该怎样做才能使用HierarchyID
?我读到实体框架不支持HierarchyID
,那么我该如何实现呢?
答案 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