1. BreezeJS Feature Suggestions

Help us make Breeze.js better by letting us know what you’d like to see next.

Suggest new features, vote on existing ones, or fork Breeze in GitHub and send us a pull request.

  1. savechanges

    Allow SaveChanges to happen so as to enjoy Breeze functionality, without actually performing the core transaction in the DB. This could be achieved by custom code.

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  2. let me "trick" the data context provider into thinking an entity was saved

    for some entities I want to use a costume save operation, I do this be overriding the "BeforeSaveEntity" method. later is want the "saveResult" send to the client to include the entities I saved using my own code.

    use case:
    an entity is saved to a database along side with a file that gets saved to a blob storage. the two operations should be an "all or nothing" transection. so I need to control what happens if one fails.

    4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  3. Must be able to fetch available enum values from metadatastore

    and be able to bind them with knockout to a select (dropdown)

    7 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  4. Predicates with the DateTimeOffset type

    I try to execute a Query containing the following predicate:

    var predicate = breeze.Predicate.create("myDateProp", breeze.FilterQueryOp.LessThan, new Date());

    "myDateProp" is of type DateTimeOffset in the server-side EF entity (and breeze client-side metadata).

    Executing this query throws the following error on the server:

    Microsoft.Data.OData.ODataException:
    "A binary operator with incompatible types was detected. Found operand types 'Edm.DateTimeOffset' and 'Edm.DateTime' for operator kind 'LessThan'."

    I am not sure whether this is a bug in the Microsoft OData Libraries that breeze depend upon, or whether the problem is in the Breeze server DLLs.

    This is really critical in our project as we consistently use the…

    13 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  5. Integrate with SignalR

    SignalR features auto-generated client proxies, and you don't need to follow silly conventions and/or decorate your method signatures with attributes to get them to work. You can design your Hubs the way you would design any other component in your solution, without having to be coupled to a protocol. Plus, you get duplex communications right out of the box. Please provide BreezeJS support for this valuable and intuitive technology.

    72 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Flag idea as inappropriate…  ·  Admin →
  6. Enabling basic configuration of batch requests........

    So if a POST request is sent to http://localhost:8081/odata/$batch,
    Then the internal batch request wont "magically" remove "odata" path inside content (why???):
    POST http://localhost:39996/odata/$batch HTTP/1.1
    Host: localhost:39996
    Connection: keep-alive
    Content-Length: 570
    Accept: multipart/mixed
    MaxDataServiceVersion: 2.0
    Origin: http://localhost:9000
    DataServiceVersion: 2.0
    User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36
    Content-Type: multipart/mixed;boundary=batch_be08-c15d-f578
    Referer: http://localhost:9000/
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: en-US,en;q=0.8,en-GB;q=0.6

    --batchbe08-c15d-f578
    Content-Type: multipart/mixed; boundary=changeset
    5551-523b-8701

    --changeset_5551-523b-8701
    Content-Type: application/http
    Content-Transfer-Encoding: binary

    POST Products HTTP/1.1
    Content-ID: 1
    DataServiceVersion: 2.0
    Accept: application/atomsvc+xml;q=0.8, application/json;odata=verbose;q=0.5, /;q=0.1
    Content-Type: application/json;odata=verbose
    MaxDataServiceVersion: 2.0

    {"ProductId":-1,"Name":"MyProduct","Description":"MyDescription"}
    --changeset_5551-523b-8701--

    --batch_be08-c15d-f578--

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  7. Support rename name of column in select query

    For example:

    var catalogQuery = entityQuery.from('Projects')

                .where(preds)
    
    .select('columnId as c1');

    7 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  8. Support for "in" query

    For example in sql:

    Select id, name from table1 where id in (1,2,3)

    213 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Flag idea as inappropriate…  ·  Admin →
  9. Use lodash

    It seems in the client-side library you guys are doing a lot of filtering/searching of collections (Arrays/Objects), have you looked into using lodash - it might decrease the file size (though it will add a dependency).

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  10. Provide more options on IKeyGenerator policy injection

    IKeyGenerator policy is discovered now by full appDomain asseblies scan.
    Please, provide an option that will allow me to explicitly specify required implementation. E.g.:
    - configuration option in app configuraiton file;
    - property or overridable virtual factory method of context provider;
    - etc.
    If none is specified, then defaul assembly-scanning approach can be used.

    3 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  11. 228 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Flag idea as inappropriate…  ·  Admin →
  12. 150 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Flag idea as inappropriate…  ·  Admin →
  13. Update the Angular-Breeze ToDoMVC Template...

    ...to reference the current versions of the NuGet libraries involved. I tried updating them myself, but the the demo broke, and I can't figure out why. Possibly the json.net?

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  14. use MetadataStore.defaultInstance in EntityManager constructor as per documentation

    The documentation says that if metadataStore is not defined in the config when creating a new EntityManager then it will use MetadataStore.defaultInstance. However, that doesn't appear to be the case.

    The code actually creates a new instance:

        if (isCtor) {
    
    configParam = configParam.whereParam("metadataStore").isInstanceOf(MetadataStore).isOptional().withDefault(new MetadataStore());
    }

    This isn't a biggie but either the code or documentation should be updated so that they are consistent.

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  15. Include instructions for implementing the starter tutorials using Webmatrix3

    Beginners trying to get to grips with learning Breeze in conjunction with other techniques including Node, Express, Angular and MongoDB (the Mean stack) would possibly benefit from the relative simplicity of an IDE like Webmatrix before migrating on to more sophisticated IDEs.

    2 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  16. make a strong integration with kendo-ui

    sort of :
    manager.executeQuery(breeze.EntityQuery.from("Employees"))

       .then(function(data){ applykendoBindings(data,kendodatasource);} );
    

    and then changetracking and all godness of breeze should happen :)

    8 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  17. 10 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  18. Give the developers more extensibility on the metadata creation.

    Sometimes it is needed to change the metadata at run time on either the client or the server. It would be nice to be able to have a mix of automatic metadata creation (through EF) and manual manipulation. An example of this need could be for server side encrypted properties and the need to add a new property with the unencrypted value. Read this question on StackOverflow for more info: http://stackoverflow.com/questions/18118091/how-to-add-a-property-to-an-entitytype-after-it-has-been-added-to-the-data-store

    128 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  Flag idea as inappropriate…  ·  Admin →
  19. Plugin for Ember.js

    Ember.js is a fastly growing and very impressive SPA web framework. Since Breeze is very well suited to OData this would give Ember developers who are developing against Microsoft and SAP a solid choice for their persistence layer.

    47 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Flag idea as inappropriate…  ·  Admin →
  20. (Minor) code change for tutorial - Angular.js

    Currently the javascript reads:

       $scope.results = data.results;
    
    $scope.$apply();

    Consider this instead:
    $scope.$apply(function () {

            $scope.results = data.results;
    
    });

    If code isn’t wrapped in a function passed to $apply, and it throws an error, that error is thrown outside of AngularJS, which means any error handling being used in your application is going to miss it. $apply not only runs your code, but it runs it in a try/catch so your error is always caught, and the $digest call is in a finally clause, meaning it will run regardless of an error being thrown.

    http://jimhoskins.com/2012/12/17/angularjs-and-apply.html

    4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  • Don't see your idea?

1. BreezeJS Feature Suggestions

Categories

Feedback and Knowledge Base