After struggling for a while, in order to protect my model while style enjoying Breeze metadata, I finally created a second DbContext just for the metadata. That's the one passed to EFContextProvider. So I have one DbContext for the model, and one that serves as a data access layer, with dto's.
After that I've tried hard to use automapper to automap in linq projections, but kept hitting the wall with a null reference exception. However, this library: <http://linqprojector.codeplex.com/> that's related and uses the exact same syntax, works perfectly.
Now, I have a method on my server that actually returns what I want: a dto, containing a list.
So say I have a class Blog containing a list of Posts in the model. The method returns an object BlogDTO containing a list of PostsDTO.

BUT, in Breeze, in the BlogDTO object, the array of posts stays empty. I witness with my own eyes the data being sent to the browser, but for some reason, Breeze ignores some of it!

Honestly, there really are quite a few problems to solve going down this path.

Just wanted to share it with you guys. If anyone understands this and can help me. Here's the Breeze query:

```
 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);
        }

```

So to be clear, in the object data, in the XHR property, the responseText property holds all the data that I want! Do I have to parse it myself? What was the point of getting my metadata down to breeze then...