首页 新闻 会员 周边 捐助

Silverlight客户端与WCF服务端共享EntityFrameWork实体

0
悬赏园豆:20 [已解决问题] 解决于 2012-11-27 10:29

Silverlight客户端与WCF服务端如果不通过RIA服务,如何共享EntityFrameWork实体?

RyanCheng的主页 RyanCheng | 菜鸟二级 | 园豆:474
提问于:2012-11-09 14:23
< >
分享
最佳答案
1

这个共享不了的

EF的运行换进是完整的.NET运行时,Silverlight的运行时就是叫Silverlight——精简版.NET运行时,运行时不一样就没法共用。

WCF RIA与Silverlight连接本质上也是在Silverlight端生成代码~~

收获园豆:15
暴力程序猿 | 菜鸟二级 |园豆:296 | 2012-11-09 18:38

这个我懂,其实EntityFrameWork也会在Silverlight客户端生成代理类,但是问题是它生成的实体的命名空间是根据WCF服务来得,也就是说不通的WCF服务在Silverlight客户端生成的代理类虽然在服务端是同一个,但是在客户端就是几个服务生成几个。比如一个实体A,被三个WCF服务引用,在客户端的代理类中会生成三个命名空间不通的代理类(内容一样,名字一样,但是命名空间不一样),这就导致我在客户端从一个服务里或取到实体对象无法直接传递给另外一个服务。

RyanCheng | 园豆:474 (菜鸟二级) | 2012-11-09 20:33

@RyanCheng: 

哦  我懂你意思了

服务端  不同服务使用同一个实体类

客户端 引用不同服务却变成  不同的服务使用不同的实体类(即使服务端是使用同一个实体类)

首先你得明确一点,在客户端生成的代理,必然会产生不同的实体类(如果有设置的话,请无视我这句话。。。。),而你想达到的目标是统一的一个实体类是吧。

我这有两种解决方案:

1、这种实体类全部在客户端序列化,返回给客户端,在客户端反序列化成自己想要的类;

2、反射代理中的实体类,将实体对象的各个属性值赋值到自己想要的类中;

如果不满意,请轻喷。。。。

暴力程序猿 | 园豆:296 (菜鸟二级) | 2012-11-09 20:49

@暴力程序猿: 序列化太麻烦吧    可能还得自己写序列化方法,第二种方法性能代价太大了,不过还是谢谢你的意见

RyanCheng | 园豆:474 (菜鸟二级) | 2012-11-10 19:38
其他回答(2)
0

本人认为 Silverlight与WCF不能共享EntityFrameWork的哦。。。Silverligth客户端---------->服务------EntityFrameWork--->DataBase   。。。。

收获园豆:5
在 水 一 方 | 园豆:1097 (小虾三级) | 2012-11-09 15:06
0

坚决不可以

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-09 22:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册