12

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

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

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

4

2 回答 2

24

您始终可以将 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/1HierarchyId类型 - 使用 theHierarchyId::Parse(string)或通常的CAST(string as HierarchyId)方法来执行此操作。

于 2010-11-30T17:28:05.713 回答
10

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

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

查看这篇文章了解更多信息: 实体框架代码优先计算属性

于 2011-08-02T14:42:21.227 回答