gpt4 book ai didi

.net - 如何在 WCF 和 Silverlight 之间共享 Linq to Entities 数据契约(Contract)

转载 作者:行者123 更新时间:2023-12-04 18:54:49 24 4
gpt4 key购买 nike

0 票否决
星星
1

我希望能够共享我的数据契约(Contract)(在 linq to entity 设计器中生成的类用 [DataContract] 属性装饰。

我正在尝试使用此处详述的架构:http://www.netfxharmonics.com/2008/11/Understanding-WCF-Services-in-Silverlight-2并尝试使用此处详述的“添加为链接”方法在我的 silverlight 项目中引用我的接口(interface):http://www.netfxharmonics.com/2008/12/Reusing-NET-Assemblies-in-Silverlight

我遇到的问题是在我的 silverlight 项目中引用我的服务接口(interface)。

我的解决方案有以下项目:

ORM - 包含一个 Linq to Entities edmx 模型(命名空间:company.client.Service) - 其中的类用 DataContract 属性等装饰。

ServiceInterface - 包含接口(interface)(命名空间 company.client.Service)和对返回的类(客户等)的 ORM 的引用

Service - 包含服务接口(interface)(命名空间 company.client.Service)的实现,并引用 ServiceInterface 和类的 ORM。

ServiceHost - 仅包含 http://www.netfxharmonics.com/2008/11/Understanding-WCF-Services-in-Silverlight-2 中推荐的 .svc 文件

WebSLHost - silverlight 应用程序的主机

Gui - silverlight GUI。

我希望所有项目都是标准的.net 程序集,当然除了 silverlight gui。

当我尝试将链接添加到我的服务接口(interface)文件(如 http://www.netfxharmonics.com/2008/12/Reusing-NET-Assemblies-in-Silverlight 中所示)时,它会给出一个编译错误,指出它找不到 ORM 并且无法识别我的实体类型。

我希望能够与我的服务和 silverlight 客户端共享 linq 到实体生成器生成的数据契约(Contract),所以如果有人有任何想法,我将不胜感激。

最佳答案

您正在尝试的内容仅适用于“完整”.NET 到“完整”.NET(或至少匹配);即便如此,它还是违反了 SOA 的规则……

数据契约的整个想法是你共享数据的形状,而不是实现。这意味着 Silverlight 不了解 EDMX 或一些更不寻常的 DataContract 属性(如回调)并不重要 - 数据仍然完好无损。

通过使用 mex 生成的类版本,您仍将拥有相同的基本数据行为 - 这是 WCF 与 Silverlight 的预期用例。所以只需使用服务引用。或者,您需要有一个位于 EDMX 和 WCF 之间的 DTO 类;只要 DTO 只使用 WCF 属性(但没有 EDMX)就应该没问题,但显然这会带来巨大的维护成本。我个人怀疑在最简单的情况下是否值得。

关于.net - 如何在 WCF 和 Silverlight 之间共享 Linq to Entities 数据契约(Contract),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/569819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com