Domanda

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.

È stato utile?

Soluzione

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top