与Breeze,Linq,DTO的预测一致

时间:2013-06-06 15:15:20

标签: breeze

经过一段时间的努力,为了在享受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属性包含我想要的所有数据!我必须自己解析吗?将我的元数据简化为微风然后......

2 个答案:

答案 0 :(得分:0)

好的,我终于想出了这个。显然Breeze需要InverseProperty属性。一旦设置完毕,我就能看到我的相关实体!

答案 1 :(得分:0)

要考虑的其他重要因素:避免在类中使用循环引用。否则Breeze可能只是忽略相关实体,就我所知。