我有我所有的正常微風查詢和更新工作非常完美,它現在非常光滑,我已經習慣了它!如何從特定的web api調用返回微風實體?
我當然想要很困難,但使用微風來加載實際上不是查詢結果的實體。或者至少不是直接。
基本上我有另一個對象,使用我的實體類來找到某些匹配對象。這個邏輯並不重要。結果是,調用該對象上的方法將返回IEnumerable<MyObject>
(實際上是IList<MyObject>
),然後我想返回到客戶端使用微風。所以我想這是一個查詢,只是其他事情正在做查詢邏輯,而不是微風傳遞它的where和orderby子句。
然而此刻,我剛剛從微風Object #<Object> has no method 'getProperty'
得到錯誤只是爲了解釋:我已經嘗試實現這個:
第一次嘗試:
[HttpGet]
public object SchemasForStatementFile(int fileId)
{
StatementFile statementFile = _contextProvider.Context.Statements.SingleOrDefault(x => x.Id == fileId);
IEnumerable<StatementFileSchema> schemasForFile = _parsingEngine.FindSchemasForFile(statementFile);
return new { schemas = schemasForFile.ToArray() };
}
第二次嘗試:
[HttpGet]
public IQueryable<StatementFileSchema> SchemasForStatementFile(int fileId)
{
StatementFile statementFile = _contextProvider.Context.Statements.SingleOrDefault(x => x.Id == fileId);
IEnumerable<StatementFileSchema> schemasForFile = _parsingEngine.FindSchemasForFile(statementFile);
return schemasForFile.AsQueryable();
}
我得到同樣的錯誤與任何一種方法。
好的謝謝澄清。我已經閱讀了JsonResultsAdapter頁面,但我已經將其解釋爲更抽象的結果所需的東西。我的意思是,我從服務器端返回微風通常會返回的相同實體,只是按照我想要的方式進行過濾和組織。不是說我抱怨你們所做的所有令人敬畏的工作,但我有點兒預期的微風只是知道如何閱讀這些結果。這是不可思議的山谷效應 - 微風變得越來越完美,當我真的需要做一些工作時,它就越奇怪! ;) – Adam
實際上,只要你使用默認的Json.net序列化器及其默認設置,那麼每個實體的屬性之一就是'$ type'。只要這與Breeze已知的其中一種類型相匹配,Breeze就會將數據轉換爲「真實」實體。 –
這就是我期待的結果,原因是我的實體沒有被自動映射 - 它們不是被返回的真實實體,而是EF代理對象。因此,就像我平常的問題一樣,你的回答可以澄清微風的行爲,並指出我的愚蠢代碼在哪裏使你的魔法框架陷入困境:) – Adam