我只是从BreezeJS开始,然后将HotTowel模板与Asp.Net Web Api和EF一起使用
我已经要尝试使用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”
任何人都可以建议代码中有什么问题或如何解决吗?
谢谢
标记
最佳答案
问题在于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
“类”无法发现您的EntityTypes。所有EntityType信息都保存在MetadataStore
...中,其中可能有很多。我们必须从
MetadataStore
获取类型;在此示例中,我们从经理的metadataStore
中获取它。附注:您必须先填充
manager.metadataStore
,然后再调用此代码,这是第一个查询的隐式影响,或者是显式的when you call fetchMetadata
。