我有一个WPF应用程序,它使用WCF服务对使用EF4的实体执行操作。 我的项目结构如下:
项目:EntityObjects
项目:WCFService
项目:DataLayer
问题是DataLayer项目对对象有不明确的引用,因为每个svc文件都返回它们自己的实体对象引用。
我该如何解决这个问题?
答案 0 :(得分:3)
它不会以这种方式工作。如果要在所有三个服务引用中包含相同的数据协定类型,则必须使用data contract sharing。这意味着在添加服务引用之前,必须在单独的程序集中将数据协定提供给客户端项目。通常,这意味着您将在服务器和客户端之间共享数据协定程序集。在你的情况下,它意味着与整个EF的东西共享EntityObjects - 这是不好的。
有多种解决方案:
最后两个选择更多是关于应用程序的体系结构。
答案 1 :(得分:0)
你可以:
构建一个包装对所有3个服务的访问权限的包装器类。然后直接引用DataLayer项目中的相关对象,而不是通过服务引用,并根据包装类中的要求进行转换。