2011-04-17 60 views
0

我有我的.dbml生成的實體。所以一些對象具有「一對多」的關係,並且在實體中它被生成爲EntitySet。WCF +發送LINQ生成的對象

此外,我有WCF工作流服務應用程序,其中包含與bussines邏輯.xamlx。

所以使用這個.xamlx我嘗試發送之前生成的對象給客戶端,但我發現一個異常「底層連接已關閉:連接意外關閉」。

EntitySet <>已添加到KnonwTypes中。 .dbml文件中的Serelzation模式具有「無」值。

那麼,你能告訴我如何解決這個問題嗎?

+0

UPDATE:我改變serilixation模式爲單向,它的工作原理,但有下一個問題,其中一個對象的一些屬性沒有用DataMemberAttribute定義,並沒有看到它在客戶端...我怎麼能解決它? – Shersh 2011-04-17 09:27:13

+0

Marc_s,如果代碼是由visual studio生成的,我如何添加此屬性? – Shersh 2011-04-17 12:47:54

+0

你可以使用另一種方法來生成你的類,它支持這種事情 - 例如[Damien Guard的Linq-to-SQL T4模板(免費)](http://l2st4.codeplex.com/)或[CodeSmith的PLinqO框架](http://www.codesmithtools.com/product/frameworks)(需要CodeSmith的使用許可) – 2011-04-17 13:39:49

回答

0

是否存在內部異常?

我的猜測是由導航屬性引起的循環引用。

如果這是的話,你有兩個選擇:

  • 從您的導航性能和渴望負載一切刪除虛擬關鍵字。 注意:不確定這是否適用於linq到sql。
  • 將您的實體映射到簡單的dto對象。
  • 採用循環參考感知序列化程序(內置於.net的程序沒有)。
+0

是的,內部存在,內部異常的堆棧跟蹤:在System.Net。 HttpWebRequest.GetResponse() 在System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan超時) – Shersh 2011-04-17 08:55:02

+0

我大概簡單的對象...但它很難映射所有的對象,我認爲這很愚蠢當做我有ADO.NET ... – Shersh 2011-04-17 08:56:36

+0

http://automapper.codeplex.com/或http://valueinjecter.codeplex.com/讓生活更輕鬆 – 2011-04-17 09:47:52