WCF客户端引用全部DataContract类(引用未在ServiceContract中作为参数或返回值的DataContract类)

问题

WCF中如果某个DataContract类未在ServiceContract中作为WCF函数的参数或返回值,则WCF客户端“添加服务引用”时采用最小化策略不会自动在WCF客户端工程中生成这个类。

例如:你的DataContract类有10个,但是ServiceContract中WCF函数只使用了1个类,那么剩余9个类在客户端“添加服务引用”时是不会被自动生成的。

 

解决办法

1.分层(DataContract多个类作为独立Model类库,例如EntityModel.dll)可生成为dll

2.WCF的Service层引用此Model类库,例如EntityModel.dll

3.WCF的客户端拷贝此类库的dll(例如EntityModel.dll),将dll添加引用到工程中

4.WCF的客户端在“添加服务引用”时作特殊设置,勾选“重新使用引用的程序集中的类型”-“重新使用所引用的指定程序集中的类型”-勾选“EntityModel”,点击确定。    然后WCF代理类中不会再生成重复的实体类的定义了。

无图无真相,下列多图是对步骤四的贴图。

点击“高级”,弹出

关键在于此处的修改,勾选“重新使用引用的程序集中的类型”-“重新使用所引用的指定程序集中的类型”-勾选“EntityModel”,点击确定。

ok,此时展开右侧WCFService.TestConfigManage下Reference.svcmap下Reference.cs可见代理类中对应实体类的命名空间是EntityModel,而不是WCFService.TestConfigManage。

问题解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值