Client-side data management for Angular apps

Angular.js

Breeze queries, saves, and takes care of all data interactions between client and server.

If you store data in a database, query and save data as complex object graphs, and share graphs across multiple views—and want to do it in JavaScript—there is no better way than with Breeze.


Todo-Angular runs in modern browsers such as IE9, IE10, and recent Chrome, Safari, Firefox, and WebKit browsers. Breeze does not support AngularJS apps running in older browsers that lack ECMAScript 5 property getters and setters.

Rich Queries

Query the server and client cache with filters, ordering, paging, and projections.

// Query for the first 10 'S'-Persons, sorted by name
// returns a promise with callbacks
return breeze.EntityQuery("Customers")
             .where("name", "startsWith", "S")
             .orderBy("name")
             .take(10)
             .using(manager).execute()
             .then(succeeded)
             .fail(failed);

 

Client caching

Cache queried, new, and changed data on client for a responsive UI.

var query = new EntityQuery("Todos").where(predicate); 
// from the example above
var results = manager.executeQueryLocally(query);

 

Change tracking

Track changes, raise events, and validate using rules in metadata and rules you write.

/* Change tracking */
// save all changes (if there are any)
if (manager.hasChanges()) {
    manager.saveChanges().then(saveSucceeded).fail(saveFailed);
}
 
// listen for any change to a customer
customer.entityAspect.propertyChanged.subscribe(somethingHappened); 
 
// listen for validation errors
customer.entityAspect.validationErrorsChanged.subscribe(updateValidationUI);

 

Angular data binding

Breeze works great with the tools you already use.

<!-- Angular template -->
<li data-ng-repeat="emp in employees">
    <label>{{emp.FirstName}}</label>
    <label>{{emp.LastName}}</label>
</li>

// bound to employees from query
manager.executeQuery(breeze.EntityQuery.from("Employees"))
       .then(function(data) { $scope.employees = data.results; });

 

Try the tutorial

Our interactive tutorial guides you through Breeze's core features.

Live Tutorial