实体框架中的HierarchyID不起作用

Moh*_*vel 12 c# entity-framework hierarchyid

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

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

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

mar*_*c_s 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
Run Code Online (Sandbox Code Playgroud)

更新#2: 阅读文档!您可以将字符串解析/1/3/4/1HierarchyId类型 - 使用HierarchyId::Parse(string)或通常的CAST(string as HierarchyId)方法来执行此操作.


Eri*_*ric 10

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

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string HierarchyString { get; set; }
Run Code Online (Sandbox Code Playgroud)

查看此文章了解更多信息: 实体框架代码第一个计算属性