如何使用BreezeJs从Web服务(asmx)获取数据?
我的asmx web服务返回与datacontext无关的DTO对象。如何在不使用dbcontext的Metadata()方法的情况下自动将元数据传递给breeze?
我已经查看了Edmunds示例,但在此示例中,我们必须手动为每个实体编写元数据。我可以使用asmx Web服务和DTO对象来避免它吗?
答案 0 :(得分:1)
Breeze目前仅接受两种格式的元数据:原生json格式和csdl(也转换为json)格式(由Entity Framework支持的模型使用)。请注意,您还可以结合使用这些格式提供此元数据。即通过多个importMetadata调用同一个metadataStore。
对于您的示例,您需要为每个“DTO”类型创建元数据,但这通常不是那么繁重。如果你有很多,你也可以写一个简单的应用程序,使用反射为你构建元数据。
答案 1 :(得分:1)
如果你有一个很大的模型,你不必手动编写元数据。有一种更简单的方法:使用EF作为元数据设计工具!
查看 DocCode示例(download it)的 DocCode.DataAccess.EF 中的FoosMetadataProvider
。它为Foo
类生成元数据,根本不存在于任何数据库中!您可以为DTO建模,就像它们使用EF映射到数据库一样。
使用EF作为元数据设计工具是在服务器上为实际未使用Entity Framework进行数据访问的模型生成元数据的快速方法。只是假装它是......然后忽略MetadataDbContext
。
您也不必在生产代码中携带EF。您可以在单独的项目中严格使用它来生成元数据。将元数据倒入脚本中(在DocCode中也有一个例子)。请记住......您只使用EF作为设计时建模工具。没有人知道;我保证不会告诉你。
p.s。:EF非常擅长这种建模业务。你没有滥用它,我不认为这是一个黑客。你没有使用完整的框架......等等。你也不使用所有的jQuery;这并没有阻止你在每一页上为你的客户服务,对吗?