曾经发过两个帖子谈到关于部署和使用WCF访问关联表问题,经过今天的调试终于得到了完美的解决,问题就出于序列化LingToSQL上,下面谈一下体会给大家分享,可以说是比较彻底的解决了Silverlight3阶段几乎所有难点问题。
一、部署问题
以前谈的体会中有一段埋怨微软的话,熟悉那个体会的朋友会记得的,本人采用了手工修改的办法,今天看来有些愚蠢了。
二、使用WCF访问关联表问题
这个问题论坛上好多朋友都提出过,一直没有满意的答案,我曾想放弃使用关联表解决开发中的数据库,但心里又不甘心,这个问题一直困惑着我,当时以为问问论坛就可以解决,这几天遇到这个坎不得不耽误一下开发进度以便彻底解决。
三、问题所在
问题就出在LinqToSQL的序列化上了,一个月前Sunpire (用户名:websco)曾给我一点指导但是他使用的ADOnet DataSevice解答中曾提到“延迟加载”概念,但是我没有认真地去理解,今天看这句话确实很管用。前几天发了帖子又谈到这个问题,今天终于得到解决,大家先记住三个概念,然后查一下帮助就能得到比较详细的理论说明,从而找到解决问题的办法。这三个概念是:
延迟加载、
序列化LinqToSQL和
单项序列化模式。
四、运气
知道了这三个概念后,经过两天的反复调试程序,把程序高的支离破碎,反反复复不得要领,碰巧在LinqToSQL项目(xxx.dbml)中偶尔发现了属性中这么几个字“
序列化模式”选项,一选竟然有“
单向”选择,正好与前面的概念对应使我茅塞顿开。当我这样做了后又发现文件xxx.dbml.designer.vb自动在表对象和列属性上加入了序列化属性定义DataContract()和DataMember(),我在以前还是自己手工添加,现在看来很愚蠢。下面是解决问题的贴图:

参见
先前的体会
http://blog.csdn.net/madaming/archive/2010/03/07/5353258.aspx