我们正在为我们的应用程序使用基于实体框架模型的 WCF 数据服务。
在此我们需要添加具有类型列的表HierarchyId
。当我将该表添加到 EDMX 文件时,该HierarchId
列未出现在类文件中。
我应该怎么做才能使用HierarchyID
?我读到实体框架不支持HierarchyID
,那么我该如何实现呢?
我们正在为我们的应用程序使用基于实体框架模型的 WCF 数据服务。
在此我们需要添加具有类型列的表HierarchyId
。当我将该表添加到 EDMX 文件时,该HierarchId
列未出现在类文件中。
我应该怎么做才能使用HierarchyID
?我读到实体框架不支持HierarchyID
,那么我该如何实现呢?
您始终可以将 a 转换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
类型 - 使用 theHierarchyId::Parse(string)
或通常的CAST(string as HierarchyId)
方法来执行此操作。
如果您使用计算列,请记住,您还需要在属性上使用 DatabaseGenerated 数据注释,如下所示:
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string HierarchyString { get; set; }
查看这篇文章了解更多信息: 实体框架代码优先计算属性