2014-09-03 73 views
0

我剛剛開始接觸BreezeJS並使用與Asp.Net網絡API和EF的HotTowel模板的「的EntityType」參數必須是「的EntityType」

我必須嘗試點的一個實例在http://www.breezejs.com/documentation/querying-locally

檢索使用manager.getEntityByKey,使用示例記錄爲了測試我使用的代碼:

var key = new breeze.EntityKey("LibraryItemCategory", 1); 
      var entity = manager.getEntityByKey(key); 

但是,當代碼被稱爲我得到錯誤「的‘的EntityType’參數必須是第一行代碼的「EntityType」實例。

在代碼被稱爲經理的點有「LibraryItemCategory」實體加載的,我已經使用Visual Studio來確認的EntityType SHORTNAME是「LibraryItemCategory」

任何人都可以提出什麼是錯的代碼或我怎麼能通過這個?

感謝

馬克

回答

1

的問題是,EntityKey構造函數的第一個參數必須是EntityType一個實例,而不是類型的名稱。 See the API doc

因此,你會做這樣的事

var type = manager.metadataStore.getEntityType("LibraryItemCategory"); 
var key = new breeze.EntityKey(type, 1); 
var entity = manager.getEntityByKey(key); 

有點笨重。

您可能想知道爲什麼EntityKey接受該類型的名稱並使用它來查找EntityType

那麼......它不能......因爲EntityKey「class」無法發現你的EntityTypes;所有的EntityType信息保存在MetadataStore ...其中可能有很多。

我們必須從MetadataStore獲得類型;在這個例子中,我們從經理的metadataStore得到它。

p.s .:在調用此代碼之前,您必須已填充manager.metadataStore,或者隱式地作爲您的第一個查詢的副作用或明確指定爲when you call fetchMetadata

0

終於明白了,我忘記了通過從服務器調用元數據來「灌注」應用程序,所以Breeze不明白類型是什麼

相關問題