我们正在为我们的应用程序使用基于实体框架模型的WCF数据服务。实体框架中的层次结构ID不起作用
在这我们需要添加一个类型为HierarchyId
的列的表。当我将该表添加到EDMX文件时,HierarchId
列未出现在类文件中。
我应该怎么做才能使用HierarchyID
?我读到Entity Framework不支持HierarchyID
,那我该如何实现呢?
我们正在为我们的应用程序使用基于实体框架模型的WCF数据服务。实体框架中的层次结构ID不起作用
在这我们需要添加一个类型为HierarchyId
的列的表。当我将该表添加到EDMX文件时,HierarchId
列未出现在类文件中。
我应该怎么做才能使用HierarchyID
?我读到Entity Framework不支持HierarchyID
,那我该如何实现呢?
您总是可以将HierarchyId
转换为其字符串表示形式 - 类似于/1/3/4/1
- 并通过WCF数据服务发送该字符串。
更新:如果将此计算持久列添加到您的SQL Server表中,那么新列肯定应该显示在您的EF模型中,并且您应该可以使用它通过WCF和WCF Data发回它服务:
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)
方法来执行此操作。
如果使用计算列只要记住,你也需要这样你的财产的DatabaseGenerated数据注释:
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string HierarchyString { get; set; }
检查这篇文章以了解更多资讯: Entity Framework Code First Computed Properties
你问题在于EF,而不是WCF。问题是EF不能表示hierarchyid列。 – Gabe 2010-11-30 18:52:08
我用这一点点的代码使HierarchyID字符串的工作更容易一些... http://stackoverflow.com/questions/3347860/is-there-a-practical-way-to-use-the-hierarchyid- datatype-in-entity-framework-4 – EBarr 2012-02-29 16:46:55