【问题标题】:Push Client-Metadata to Server将客户端元数据推送到服务器
【发布时间】:2014-03-21 12:27:52
【问题描述】:

我们有一个非常动态的元模型,它经常变化。我们不使用 EF,而是使用自己的数据库技术。

由于我们没有找到任何关于如何“手动”创建服务器端元模型的好的文档,因此我们决定创建客户端元模型并在加载应用程序时将其导入到微风中。

现在我们遇到了问题,即使我们告诉微风获取所有 Person-Objects 并取 3,服务器扩展所有关联并返回超过 3 个结果。 Breeze 然后将客户端上的结果削减为 3 并填充属性。

现在我想知道,如果我们只是不了解某些概念。我们要做的就是在不使用 EF 或 Nhybernate 的情况下动态地告诉微风我们的元模型是什么样的。有这方面的文档吗?

我找到的关于 Schema 的唯一文档是这个: http://www.breezejs.com/documentation/metadata-schema

但它只解释了客户端元模型,而不是我们的服务器端必须生成的模式。据我所知,无论如何,服务器端元模型都会被翻译成客户端元模型。

如果有人能澄清或提供有关该主题的所有“基本信息”的链接,那就太好了。

【问题讨论】:

    标签: metadata breeze metamodel


    【解决方案1】:

    客户端元数据用于 Breeze 客户端。服务器不应该需要它,因为它已经知道域模型的样子。使用 ORM 时,服务器端元数据的内容通常来自数据库和/或映射层。

    Breeze 的服务器端 WebApi 过滤器尝试将 OData 查询参数应用于来自数据提供者(EF、NH 或其他)的 IQueryable。如果数据提供者的 LINQ 实现不完整,可能会导致您提到的问题,其中take 不起作用。

    很遗憾,metadata-schema 文档已过期。从那时起,Breeze 元数据 JSON 格式的结构发生了变化。您最好查看example of current metadata,并遵循Metadata by Hand 指南。

    【讨论】:

    • 好的。好吧,为了测试我的应用程序,我只想要一个只有两个文本属性的非常小的元数据,尽管 Person-Object 要大得多。我想知道为什么所有的“垃圾”都会越界,而不仅仅是我定义的。我想这是不可能的?
    • 服务端对象被序列化为JSON;这是在 JSON 序列化程序的控制之下,而不是 Breeze。 WebApi 使用Json.NET 库,它有一系列令人眼花缭乱的选项来控制序列化。可能最直接的是使用JsonIgnoreAttribute or DataMemberAttribute。您可以使用这些属性来注释您的 Person 类,以控制要发送给客户端的属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    相关资源
    最近更新 更多