2014-02-10 73 views
0

我試圖從db4o數據庫的脫機副本中獲取信息。我沒有原始的對象類,因爲它們來自Java應用程序(並且我在C#中工作),所以我使用db4o的GenericObjects在LINQPad中構建了一個包裝器,並且可以很好地爲大多數對象進行查詢。以編程方式/一般地從db4o檢索枚舉值

但是,我無法查詢枚舉值,因爲他們報告沒有任何字段。但是,當我在Visual Studio的Object Manager Enterprise加載項中查看它們時,我可以按名稱/序號方式查看存儲的枚舉,但存儲的ID似乎不匹配從GenericObject檢索到的ID (所以我不能手工結婚)。

(inb4有人問我爲什麼不直接使用OME,在OME拖/放查詢生成器,讓我們說,低於有用,因此LINQPad路線。)

我可以不要想象使用類似的GenericObject方法來查詢數據庫的Visual Studio插件而不是,所以任何人都可以演示我如何從GenericObject中獲取枚舉名稱?

回答

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)); 

(現在看,如果我可以做類似的東西集合!!)