2017-02-03 29 views
0

我想向客户端传递一些关于实体的虚假信息,并将其与我的实体一起提供。从我所知道的只有实体的映射属性在查询执行后才可用。是否有我缺少的钩子或者其他方式可以获得从服务器获取给定实体的API调用的原始结果?Breeze(entityframework,knockout)在查询完成后,如何访问原始实体

e.g:

server: 

class Patient 
{ 
    [NotMapped] 
    public string Name => First + " " + Last; 
    public string First {get;set;} 
    public string Last {get;set;} 
} 

client: 

this._executeQuery(breeze.EntityQuery.from('api/Patient/1'))      
    .then(function (data) { 
    var data = data[0]; 
    // data = PatientCtor with first and last properties only 
}); 

我想data.name在客户端可用。它与查询一起发送给客户端,但不会在查询的另一端出现。

回答

1

您可以将属性添加到实体的客户端定义,Breeze将为您填充它们。您可以通过注册一个自定义的构造函数的实体做到这一点:

function Patient() { 
    this.name = ""; 
} 
var em = new breeze.EntityManager(); 
em.metadataStore.registerEntityTypeCtor("Patient", Patient); 

请注意,你需要你的第一个查询之前做到这一点。

然后,当breeze通过查询创建Patient实体时,它将填充未映射的name属性。

请参阅Breeze文档Extending Entities

+0

谢谢史蒂夫。按照描述工作。 – GenuineRex

+0

太棒了!请将答案标记为“已接受”。 –