包括未映射到实体框架实体的服务器端属性

Ste*_*cht 7 breeze

我们正在向我们未在数据库中跟踪的服务器上的对象添加其他属性.数据返回给客户端,但是由breeze实现的对象没有将其作为属性.我们如何向我们返回breeze的对象添加属性,但是不将它们映射到我们存储数据的数据库中?

示例:窗口小部件类属性A - 映射到数据库属性B - 具有[NotMapped]属性,以便它不存储在数据库中.它由服务器即时计算.

当我们在客户端获取对象时,我们得到:Widget Class = {Property A:ko.observable(A的值)}

物业B遗失.

当我们查看服务器返回的json时,我们看到:

小部件类= {属性A:A的值,属性B:B的值}

aru*_*rul 4

具有 NotMapped 属性的属性不是 EFContextProvider 生成的元数据的一部分,因此这些属性在客户端 Breeze 实体中不可用。但在 js 中,您可以扩展客户端实体并自己将属性添加到entityType(并设置初始值)。这将确保从服务器检索 json 对象时正确设置属性值。

http://www.breezejs.com/documentation/extending-entities

  • 阿鲁尔是正确的。这对我有用。阅读他由微风团队分享的文档。在实体类型构造函数中,您必须使用与服务器中的实体完全相同的名称来声明具有默认值的 NotMapped 属性(如果以大写字母开头,则遵循相同的名称)。例如:实体“TheEntity”具有名为“Not”的 NotMapped bool 属性。然后在 javascript 中:metadataStore.registerEntityTypeCtor('TheEntity', function () { this.Not = ko.observable(false); }); 仅此而已,它将使用 ctor 中提供的值,除非它具有与服务器不同的值。 (2认同)