2014-03-19 86 views
0

我們有一個非常動態的元模型,它經常發生變化。我們不使用EF,而是使用自己的數據庫技術。將客戶端元數據推送到服務器

由於我們沒有找到任何有關如何手動創建服務器端元模型的好文檔,因此我們決定創建客戶端元模型並在加載應用程序時將其導入微風。

現在我們遇到了這樣的問題,儘管我們告訴輕鬆獲取所有人員對象並取3,但服務器擴展了所有關聯並返回了3個以上的結果。 Breeze然後將客戶的結果削減到3並填充屬性。

現在我想知道,如果我們只是不明白一些概念。我們所要做的就是動態地告訴微風,我們的元模型看起來像不使用EF或NHybernate。有沒有關於這方面的任何文件?

在架構我發現的唯一的文件是這樣的一個: http://www.breezejs.com/documentation/metadata-schema

但它只能說明客戶端 - 元模型,但不是我們的服務器端必須生成模式。據我所見,服務器端元模型無論如何都會被翻譯成客戶端 - 元模型。

如果有人能夠澄清或提供關於該主題的所有「基本信息」的鏈接,那該多好。

回答

0

客戶端元數據用於Breeze客戶端。服務器不需要它,因爲它已經知道域模型的外觀。使用ORM時,服務器端元數據的內容通常來自數據庫和/或映射層。

Breeze的服務器端WebApi過濾器試圖將OData查詢參數應用於來自數據提供者(EF,NH或其他)的IQueryable。如果數據提供者的LINQ實現不完整,那可能會導致您提到的問題,其中take不起作用。

不幸的是,metadata-schema文檔已過期。自那時起,Breeze元數據JSON格式的結構發生了變化。您最好查看example of current metadata,並遵循Metadata by Hand指導原則。

+0

好的。那麼爲了測試我的應用程序,我只想要一個只有兩個文本屬性的非常小的元數據,儘管人物對象要大得多。我想知道爲什麼所有的「垃圾」都會超過線路而不是我所定義的。我猜這是不可能的? – NoRyb

+0

服務器端對象被序列化爲JSON;這是在JSON串行器的控制下,而不是Breeze。 WebApi使用[Json.NET](http://james.newtonking.com/json)庫,它有一組令人眼花繚亂的選項來控制序列化。最直接的可能是使用[JsonIgnoreAttribute或DataMemberAttribute](http://james.newtonking.com/json/help/index.html?topic=html/ReducingSerializedJSONSize.htm)。您將使用這些屬性註釋您的Person類,以控制要將哪些屬性發送給客戶端。 –

相關問題