微风 - 在服务器端创建实体

问题描述:

我想在服务器端创建我的微风实体,而不是使用breeze entitymanager.createEntity,以便我可以设置实体的属性;我不想在客户端这样做。

I would like to create my breeze entity on the server side rather than using breeze entitymanager.createEntity, so that I can set properties of the entity; I don't want to do this on the client side.

服务器端api控制器:

SERVER SIDE api controller:

[HttpGet]
public Foo CreateFoo() 
{

    Foo f = new Foo()
    {
       PrimaryKey = Guid.NewGuid(),
       SomeProperty = "XXX";
    };

    return f;
    // return _contextProvider.Context.Users.Add(user); TRIED THIS TOO

}

[HttpGet]
public string Metadata()
{
   return _contextProvider.Metadata();
}

客户端 -

var query = breeze.EntityQuery.from("CreateFoo");
manager.executeQuery(query).then(function(data) {

    // returned entity has entityState "Unchanged" here

    // this fixes, but is it correct? - YES per accepted answer's comments 
    data.results[0].entityAspect.entityState = breeze.EntityState.Added; 

    return data;
});

我尝试过这种方式,但是当我打电话时总是在服务器端发现并发异常SaveChanges。

I've tried this a number of ways but always get concurrency exceptions on the server side when I call SaveChanges.

我该怎么做?


  1. 您是否在客户端上拥有Foo类型的元数据。 (通过元数据端点或使用MetadataStore api在客户端上创建)

  2. 您在哪里为Foo实例分配主键?

  3. 您是否更新或至少设置Foo实例的并发字段(假设有)?