以编程方式/通用方式从db4o中检索枚举值

时间:2014-02-10 13:06:50

标签: c# db4o

我正在尝试从db4o数据库的脱机副本中获取信息。我没有原始的对象类,因为它们来自Java应用程序(我在C#中工作),所以我使用db4o的GenericObjects在LINQPad中构建了一个包装器,并且可以很好地查询它以适应大多数对象。 / p>

但是,我在查询枚举值时遇到问题,因为它们报告没有任何字段。但是,当我在Visual Studio的对象管理器企业加载项中查看它们时,我可以按名称/序号方式查看存储的枚举,但是存储的ID似乎与我从GenericObject检索到的ID不匹配。 (所以我不能手动将它们结合起来)。

(inb4有人问为什么我不只是使用OME,OME中的拖放查询构建器,比如说,不太有用,因此LINQPad路由。)

我无法想象Visual Studio插件使用类似的GenericObject方法来查询数据库,所以任何人都可以演示如何从我检索到的GenericObject中获取枚举名吗?

1 个答案:

答案 0 :(得分:0)

我找到了;枚举名称/序号存储在java.lang.Enum的基础'表'下。它们具有与命名枚举“表”中相同的存储ID。

以下似乎有效:

var myEnumObjectID = db.Ext().GetID(myEnumObj);
var enumNameField = db.Ext().StoredClass("java.lang.Enum").StoredField("name", null);
var myEnumName = enumNameField.Get(db.Ext().GetByID(myEnumObjectID));

(现在看看我是否可以为收藏做类似的事情!!)