2009-03-06 46 views
18

在ado.net數據服務中使用linq-to-sql時遇到了一個奇怪的錯誤。我有一個簡單的Silverlight應用程序連接到遠程數據庫。我首先添加了linq-to-sql類,並將一張表拖放到設計器上。然後我添加了一個ADO.NET數據服務,更新了DataService引用以指向L2S數據上下文。使用Linq-to-SQL的ADO.NET數據服務

編譯沒有問題。

當我打開IE瀏覽器的服務,所以我添加下面的屬性添加到數據服務,我立即得到一個錯誤:

[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)] 

這帶來了詳細的錯誤信息:

異常消息是'在數據上下文類型'DataClasses1DataContext'上,有一個頂級IQueryable屬性'table1',其元素類型不是實體類型。確保IQueryable的屬性是實體類型的或指定的IgnoreProperties屬性上的數據上下文類型忽略此屬性

發生這種情況,我在L2S設計師使用任何數據庫表!

什麼是這個錯誤,爲什麼我得到它?

+0

每個端點都可以通過http:// localhost/{ServiceName}/{EndPointName} – jdiaz 2009-03-09 21:25:06

回答

21

您需要使用DataServiceKey屬性修飾您的類。

有關Marc的博客here和MSDN博客here(後者涉及多對多關係,但涵蓋了DatServiceKey屬性)的更多詳細信息。

+0

進行訪問,但它爲什麼不以XML格式顯示實體?它只是說DEFAULT table1。我什至使用config.SetEntitySetAccessRule(「table1」,EntitySetRights.All); – jdiaz 2009-03-06 09:05:18