我在没有Entity Framework的情况下使用breeze,有没有办法在服务器端一次性保存整个更改集?或者我是否必须遍历实体列表并根据实体状态的检查保存每个实体?在此先感谢!!!
答案 0 :(得分:0)
您当然可以在单个EntityManager.saveChanges调用中保存整个更改集。看一下breeze.js.samples GitHub repo中的NoDb示例,你会看到一个这样的例子。
当然,您需要在服务器上自己实现该实际的保存操作,但服务器将收到整个更改集供您使用。
此外,如果您不想使用EF,您可以使用其他几种微风后端服务器技术。看一下.NET服务器的.NET,Node和Java版本的微风GitHub repos。
这些包括以下组合的服务器实现
答案 1 :(得分:0)
我和NancyFx(没有EF - OrmLite作为ORM),Breeze和AngularJs有类似的情况。我google了很多,但没有找到任何可以帮助我的好资源。 经过大量的热门和试编,我编写了完成的代码。
以下是简要步骤。
仅使用EF生成元数据。您可以在生产中删除EF。
将EF元数据保存到metadata.js中,客户端将使用该元数据加载元数据。
在您的应用程序中进行更改,以便从js文件而不是从服务器中选择元数据。
在服务器上定义您自己的SaveChanges方法。
private dynamic SaveChanges(dynamic arg)
{
var requestBody = this.Request.Body;
int length = (int)requestBody.Length; //this is a dynamic variable.
byte[] data = new byte[length];
requestBody.Read(data, 0, length);
JObject saveBundle = JObject.Parse(System.Text.Encoding.Default.GetString(data));
for (int i = 0; i < saveBundle["entities"].Count(); i++)
{
JToken entity = saveBundle["entities"][i];
switch ((string)entity["entityAspect"]["entityTypeName"])
{
case "Node:#Breeze":
Node node = NodeContext.Process(entity);
break;
}
}
return this.Request.Body;
}
&#34;节点:#微风&#34;应替换为&#34; EntityName:NameSpace&#34; NodeContext应该由一些用户定义的类替换,我们将在实体状态的基础上处理实体(CRUD操作)。