-1

如何使用 BreezeJs 从 Web 服务 (asmx) 获取数据?

我的 asmx Web 服务返回与数据上下文无关的 DTO 对象。如何在不使用 dbcontext 中的 Metadata() 方法的情况下自动将元数据传递给微风?

我已经查看了 Edmunds 示例,但在此示例中,我们必须手动为每个实体编写元数据。我可以使用 asmx Web 服务和 DTO 对象来避免它吗?

4

2 回答 2

1

Breeze 目前只接受两种格式的元数据,一种原生 json 格式和一种 csdl(也转换为 json)格式(由 Entity Framework 支持的模型使用)。请注意,您还可以以这些格式的组合交付此元数据。即通过对同一个元数据存储的多个importMetadata 调用。

对于您的示例,您需要为每个“DTO”类型创建元数据,但这通常不是那么繁重。如果你有很多,你也可以编写一个简单的应用程序,使用反射为你构建元数据。

于 2013-05-31T23:57:35.150 回答
1

如果您有一个大模型,则不必手动编写元数据。有一个更简单的方法:使用 EF 作为元数据设计工具!

查看DocCode 示例FoosMetadataProviderDocCode.DataAccess.EF中的(下载)。它为根本不存在于任何数据库中的类生成元数据!您可以对 DTO 进行建模,就好像它们使用 EF 映射到数据库一样。Foo

使用 EF 作为元数据设计工具是一种在服务器上为实际上未使用实体框架进行数据访问的模型生成元数据的快速方法。只是假装它是......然后忽略MetadataDbContext其后。

您也不必在生产代码中携带 EF。您可以在单独的项目中严格使用它来生成元数据。将该元数据倒入脚本中(DocCode 中也有一个示例)。请记住……您只是将 EF 用作设计时建模工具。没有人知道;我保证我不会说的。

ps:EF在这个建模业务上还是很擅长的。你没有滥用它,我不认为这是一个黑客行为。您没有使用完整的框架……等等。你也不使用所有的 jQuery;这并没有阻止您在每一页上为您的客户提供服务,对吧?

于 2013-06-04T02:08:13.603 回答