Pergunta

The Short

I have an existing WCF Data Service that I would like to wire up to use in an AngularJS SPA using Breeze.

Can anyone show a noobie level example of how to do that with out access to the actual database (just the OData Service)?


The Long

I have an existing WCF Data Service that is already in use by a WPF app.

I experimenting with web development and would like to wire up to that service using Breeze. In case it matters, I am using Angular (and am setting up via the HotTowel.Angular nuget package).

I have done a fair amount of Googling and I am stuck.

I can see two ways outlined from my searching:


The First

Make is to make a Breeze controller on the server side of my web app.

The problem I see with that is the metadata. From my limited understanding I need to tell breeze all the meta data of my WCF Data Service. I know how to get the meta from my WCF Data Service (the url + $Metadata), but I don't know how to tell this to Breeze.


The Second

This way is more vague in implementation. I got it from the accepted answer on this question: Breeze.js with WCF Data Service.

Basically the answer here does not seem to work. It relies on something called the entityModel that I cannot seem to find (I have an entityManager, but not an entityModel. And the entityManager does not have the properties that the entityModel is shown to have.


In the end I like the idea of the second method best. That way I can directly connect to my odata service with out needed my web app to have a "in-between" server component. But I would happily take anything that does not need entity framework to connect to my database.

I tried several variations of the second option, but I just can't seem to get it to work. I also tried the Breeze samples. It has one for OData, but it still relies on having Entity Framework hook up to the source database.

To to clearly summarize what I am asking: I am looking for a Breeze example that connects to an existing WCF Data Service.

Foi útil?

Solução

We regret that you were mislead by that old StackOverflow answer which was way out of date and (therefore) incorrect. There is no longer a type called entityModel.

I updated the answer there and repeat here the same advice.

The recommended way to configure Breeze so that it talks to a standard OData source (such as a WCF OData service) is

breeze.config.initializeAdapterInstance('dataService', 'OData', true);

Here's how you might proceed with defining an EntityManager and querying the service:

// specify the absolute URL to the WCF service address
var serviceName = "http://localhost:9009/ODataService.svc";

var em = new breeze.EntityManager(serviceName);

var query = breeze.EntityQuery.from("Customers")
    .where("CompanyName", "startsWith", "B")
    .orderBy("City");

em.executeQuery(query).then(function(data) {
   // process the data.results here.
});

There is some documentation on this subject here.

A Web API OData service differs from a WCF OData service in several respects. But you may still find value in the Angular Web API OData sample.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top