Breeze服务器端保存更改而不使用实体框架
我使用的是没有实体框架的breeze,有没有办法在服务器端一次性保存整个更改集?或者我必须循环遍历实体列表,并根据实体状态的检查保存每个实体?提前感谢 您当然可以在单个EntityManager.saveChanges调用中保存整个更改集。查看breeze.js.samples GitHub repo中的NoDb示例,您将看到一个示例 当然,您需要自己在服务器上实现实际的保存操作,但服务器将接收整个更改集供您使用 此外,如果您不想使用EF,还可以使用其他几种breeze后端服务器技术。看看.NET服务器的.NET、Node和Java版本的breeze GitHub reposBreeze服务器端保存更改而不使用实体框架,breeze,Breeze,我使用的是没有实体框架的breeze,有没有办法在服务器端一次性保存整个更改集?或者我必须循环遍历实体列表,并根据实体状态的检查保存每个实体?提前感谢 您当然可以在单个EntityManager.saveChanges调用中保存整个更改集。查看breeze.js.samples GitHub repo中的NoDb示例,您将看到一个示例 当然,您需要自己在服务器上实现实际的保存操作,但服务器将接收整个更改集供您使用 此外,如果您不想使用EF,还可以使用其他几种breeze后端服务器技术。看看.NE
- breeze.server.net
- breeze.server.node
- breeze.server.java
- .NET/实体框架(EF支持的任何SQL db)
- .NET/Hibernate-(NHibernate支持的任何SQL数据库)
- 节点/续集-(MySql/Postgress数据库)
- Node/Mongo-(Mongo数据库)
- Java/Hibernate-(Hibernate支持的任何SQL数据库)
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;
}
私有动态保存更改(动态参数)
{
var requestBody=this.Request.Body;
int length=(int)requestBody.length;//这是一个动态变量。
字节[]数据=新字节[长度];
读取(数据,0,长度);
JObject saveBundle=JObject.Parse(System.Text.Encoding.Default.GetString(data));
对于(int i=0;i
NodeContext应该被一些用户定义的类所取代,在这些类中,我们将根据实体状态处理实体(CRUD操作)。可能-您的备份存储是什么?感谢您的回复!!这是关系数据库,Web API和微型orm。谢谢Jay!NoDb示例只适用于一个实体TodoItem,我可以看到它在从客户机发送的列表中循环,并保存每个实体。我可以使用Breeze将整个变更集(不止一个实体)发送到服务器,因此基本上我必须循环实体,将它们转换为它们的模型,并通过检查实体状态保存每个实体,没有一个方便的函数来保存所有内容?根据发送到服务器的saveBundle执行保存的代码取决于后端的功能。EF能够接受整个变更集,Breeze EF服务器实现利用了这一点。NoDb示例显示了一种仅使用内存存储的替代实现。如果您的ORM提供了接受更改集的功能,那么您可以将发送到服务器的saveBundle转换为特定于ORM的更改集,并将其作为单个操作提交。这有道理吗?有道理。ORM无法接受更改集。我尽量避免使用EF,因为它又重又慢。谢谢你,杰!谢谢回复!经过大量的研究,我做了与您的步骤1-3相同的实现,对于步骤4,我使用了Breeze的SaveChange并实现了底层的保存功能。我之所以使用“无实体框架”,是因为我需要使用Mono在Linux上部署解决方案。早些时候,我拒绝了Breeze-NoDB解决方案,因为“Breeze.ContextProvider”nuget包会自动下载“实体框架包”,所以我觉得NoDB解决方案也使用EF程序集。但今天,我刚刚从项目中删除了EF程序集,它正在工作,现在我不必在服务器端编写巨大的SaveChanges逻辑。