breezejs问题与保存包

daf*_*key 3 .net javascript c# json breeze

我正在使用breezejs,我的应用程序的服务器端代码是.net.

在我的观点(客户端),我想添加和实体然后我想保存它.让我们假设一个实体是这样的:

{
  "Id": 1,
  "Name": "someName",
  "CreatedDate": "1900-01-01T05:00:00Z",
  "UpdatedDate": "1900-01-01T05:00:00Z",
  "CreatedBy": null,
  "UpdatedBy": null,
  "RowVersion": 0,
   etc ...
  }
}
Run Code Online (Sandbox Code Playgroud)

我想设置的值CreatedDate UpdatedDate CreatedByUpdatedBy,我能做到这一点当然是使用JavaScript的,但我不希望客户采取这种事情的照顾.

我的微风控制器在哪里生活这个功能是这样的:

[HttpPost]
public SaveResult SaveChanges(JObject saveBundle)
{
    return _contextProvider.SaveChanges(saveBundle);
 }
Run Code Online (Sandbox Code Playgroud)

因为你可以看到saveBundle是一个JObject,当我调试时,我看到saveBundle是这样的:

{
"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": {}
}
Run Code Online (Sandbox Code Playgroud)

如何在提交保存之前更改saveBundle中的值CreatedDate UpdatedDate CreatedByUpdatedBy

这是一个JObject,有一个对象数组作为proprety,我可以用javascript操纵Json,我怎么能用.Net ???

非常感谢.

daf*_*key 5

感谢Jay Traband的帖子,我终于找到了一种在保存之前对实体进行更改的方法.

我重载了BeforeSaveEntity这样的:

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;
   }
Run Code Online (Sandbox Code Playgroud)

非常感谢,我希望有一天能帮助别人.