经过一段时间的挣扎,为了在享受 Breeze 元数据的同时保护我的模型,我终于为元数据创建了第二个 DbContext。那就是传递给 EFContextProvider 的那个。所以我有一个用于模型的 DbContext,以及一个用作数据访问层的 DbContext。之后,我努力使用 automapper 在 linq 投影中进行自动映射,但一直遇到空引用异常。但是,这个库:http ://linqprojector.codeplex.com/相关并使用完全相同的语法,可以完美运行。现在,我的服务器上有一个方法可以实际返回我想要的:一个 dto,包含一个列表。假设我有一个类博客,其中包含模型中的帖子列表。该方法返回一个包含 PostsDTO 列表的对象 BlogDTO。
但是,在 Breeze 中,在 BlogDTO 对象中,帖子数组保持为空。我亲眼目睹了数据被发送到浏览器,但由于某种原因,Breeze 忽略了其中的一些!
老实说,沿着这条路走下去,确实有很多问题需要解决。
只是想和大家分享一下。如果有人理解这一点并可以帮助我。这是微风查询:
var query = EntityQuery
.from('BlogWithPosts')
.withParameters({id: blogId});
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
console.log(data);
var s = data.results[0];
return blogObservable(s);
}
所以要清楚,在对象数据中,在 XHR 属性中,responseText 属性包含我想要的所有数据!我必须自己解析吗?那么让我的元数据变得轻而易举有什么意义......