我正在尝试从已从 SQL Server 数据库获取的 DataRow 中检索 C# 中的 SqlHierarchyID 数据类型。在数据库调用之后,如果我写以下内容:
var id = datarow["TreeID"];
然后在 Visual Studio 中使用手表检查 id 的值,它持有正确的层次结构值(并且非空)。
但是,以下所有情况都会引发 InvalidCastException:
SqlHierarchyId id2 = (SqlHierarchyId) id;
SqlHierarchyId id3 = datarow.Field<SqlHierarchyId>("TreeID");
SqlHierarchyId id4 = (SqlHierarchyId)datarow["TreeID"];
此外,要求对两个对象的分配能力进行反思:
//returns false:
SqlHierarchyId id5 = new SqlHierarchyId();
return id5.GetType().IsAssignableFrom(id.GetType());
此外,尝试“软演员”返回 null:
SqlHierarchyId id6 = id as SqlHierarchyId;
- 尝试一切作为 SqlHierarchyId?数据类型是徒劳的。
- 我正在引用 32 位程序集,并尝试在 64 位和 32 位模式下编译我的解决方案。
- 初始化一个空的 SqlHierarchyId 实例然后分配它没有帮助。
谢谢你的帮助!
-JT
编辑:程序集来自 SQL Server Express 2012 (x86) SDK 目录。