Cia*_*ill 5 .net linq silverlight wcf web-services
0投票明星1
我希望能够共享我的datacontracts(在linq中生成的类到实体设计器使用[DataContract]属性进行修饰.
我正在尝试使用这里详述的架构:http://www.netfxharmonics.com/2008/11/Understanding-WCF-Services-in-Silverlight-2并尝试使用'在我的silverlight项目中引用我的接口'添加链接'方法详见此处:http://www.netfxharmonics.com/2008/12/Reusing-NET-Assemblies-in-Silverlight
我遇到的问题是在我的silverlight项目中引用我的服务接口.
我的解决方案有以下项目:
ORM - 包含Linq to Entities edmx模型(namespace:company.client.Service) - 其中的类使用DataContract属性等进行修饰.
ServiceInterface - 包含接口(名称空间company.client.Service)以及对返回的类(Customer等)的ORM的引用
Service - 包含服务接口(名称空间company.client.Service)的实现,并引用ServiceInterface和类的ORM.
ServiceHost - 包含http://www.netfxharmonics.com/2008/11/Understanding-WCF-Services-in-Silverlight-2中推荐的.svc文件
WebSLHost - silverlight应用程序的主机
Gui - 银色GUI.
我希望所有的项目都是标准的.net程序集,当然除了silverlight gui.
当我尝试添加到我的服务接口文件的链接时(如http://www.netfxharmonics.com/2008/12/Reusing-NET-Assemblies-in-Silverlight中所示),它会发出一个编译错误,指出它可以'找到ORM并且无法识别我的实体类型.
我希望能够通过我的服务和silverlight客户端将linq生成的数据转换为实体生成器,所以如果有人有任何想法,我会很感激.
您所尝试的内容仅适用于“完整”.NET 到“完整”.NET(或至少匹配);即便如此,它还是违反了 SOA 的规则......
数据契约的整体思想是您共享数据的形状,但不共享实现。这意味着 Silverlight 不知道 EDMX 或 DataContract 属性的一些更不寻常的风格(如回调)并不重要 - 数据仍然完好无损。
通过使用 mex 生成的类版本,您仍将具有相同的基本数据行为 - 这是 WCF 与 Silverlight 的预期用例。所以只需使用服务参考即可。或者,您需要有一个位于 EDMX 和 WCF 之间的 DTO 类;只要DTO只使用WCF属性(但不使用EDMX)就应该没问题,但显然这会产生巨大的维护成本。我个人怀疑在大多数简单的场景中是否值得。