经过一段时间的努力,为了在享受Breeze元数据的风格时保护我的模型,我终于为元数据创建了第二个DbContext。这是传递给EFContextProvider的那个。所以我有一个DbContext用于模型,一个用作数据访问层,使用dto。 在那之后,我努力使用automapper来自动执行linq投影,但是仍然使用null引用异常进入墙。但是,这个库:http://linqprojector.codeplex.com/与之相关并使用完全相同的语法,效果很好。 现在,我的服务器上有一个实际返回我想要的方法:一个包含列表的dto。 所以说我有一个类Blog包含模型中的帖子列表。该方法返回一个包含PostsDTO列表的对象BlogDTO。
但是,在Breeze中,在BlogDTO对象中,帖子数组保持为空。我亲眼目睹了发送到浏览器的数据,但出于某种原因,Breeze忽略了一些数据!
老实说,要走这条道路,确实有很多问题需要解决。
只是想与你们分享。如果有人理解这一点,可以帮助我。这是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属性包含我想要的所有数据!我必须自己解析吗?将我的元数据简化为微风然后......
答案 0 :(得分:0)
好的,我终于想出了这个。显然Breeze需要InverseProperty属性。一旦设置完毕,我就能看到我的相关实体!
答案 1 :(得分:0)
要考虑的其他重要因素:避免在类中使用循环引用。否则Breeze可能只是忽略相关实体,就我所知。