problemi di breezejs con il pacchetto di salvataggio

sto lavorando con breezejs, e il codice lato server della mia app è .net.

nelle mie opinioni (lato client), voglio aggiungere e quadro, quindi voglio salvarlo. Supponiamo che un’entity framework sia come questa:

{ "Id": 1, "Name": "someName", "CreatedDate": "1900-01-01T05:00:00Z", "UpdatedDate": "1900-01-01T05:00:00Z", "CreatedBy": null, "UpdatedBy": null, "RowVersion": 0, etc ... } } 

Voglio impostare i valori di CreatedDate UpdatedDate CreatedBy e UpdatedBy , posso farlo usando javascript ovviamente, MA non voglio che il cliente si prenda cura di questo genere di cose.

il mio controller brezza dove vive questa funzione è come questo:

 [HttpPost] public SaveResult SaveChanges(JObject saveBundle) { return _contextProvider.SaveChanges(saveBundle); } 

come puoi vedere il saveBundle è un JObject, quando eseguo il debug vedo il saveBundle in questo modo:

 { "entities": [ { "Id": 1, "Name": "someName", "CreatedDate": "1900-01-01T05:00:00Z", "UpdatedDate": "1900-01-01T05:00:00Z", "CreatedBy": null, "UpdatedBy": null, "RowVersion": 0, etc ... } } } ], "saveOptions": {} } 

Come posso modificare i valori di CreatedDate UpdatedDate CreatedBy e UpdatedBy nel saveBundle prima che il salvataggio venga eseguito ???

questo è un JObject con una serie di oggetti come proprety, posso manipolare Json con javascript, come posso farlo con .Net ???

Molte grazie.

Grazie al post di Jay Traband ho finalmente trovato un modo per apportare modifiche a un’ quadro prima di salvarla.

Ho sovraccaricato il BeforeSaveEntity questo modo:

 protected override bool BeforeSaveEntity(EntityInfo entityInfo) { // Return false if don´t want to save the entity var entityType = entityInfo.Entity.GetType(); if (entityInfo.Entity.GetType() == typeof(MyEntityTypeModel)) { if (entityInfo.EntityState == EntityState.Added) // It can be 'Modified' or 'Deleted' { var MyModel = entityInfo.Entity as MyEntityTypeModel; MyModel.CreatedDate = DateTime.Now; MyModel.UpdatedDate = DateTime.Now; string username = Membership.GetUser().UserName; MyModel.CreatedBy = username; MyModel.UpdatedBy = username; } } return true; } 

Grazie mille, e spero che questo possa aiutare qualcuno un giorno.

È ansible intercettare il processo di salvataggio lato server di Breeze utilizzando i metodi virtuali BeforeSaveEntity e BeforeSaveEntities di ContextProvider . La documentazione qui e qui ha più informazioni su questo argomento.

Ad esempio, è ansible sovrascrivere BeforeSaveEntities con codice simile al seguente.

 protected override Dictionary> BeforeSaveEntities(Dictionary> saveMap) { foreach (var type in saveMap.Keys) { var list = saveMap[type]; foreach (var entityInfo in list) { var entity = entityInfo.Entity; // .. do something interesting here } }