使用linq-to-sql和ado.net数据服务时遇到一个奇怪的错误.我有一个简单的silverlight应用程序连接到远程数据库.我首先添加了linq-to-sql类并将表拖到设计器上.然后我添加了一个ADO.NET数据服务,更新了DataService引用以指向L2S数据上下文.
编译没有问题.
当我在IE中打开服务时,我立即收到错误,因此我将以下属性添加到数据服务:
[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]
这会显示详细的错误消息:
异常消息是'在数据上下文类型'DataClasses1DataContext',有一个顶级IQueryable属性'table1',其元素类型不是实体类型.确保IQueryable属性是实体类型,或者在数据上下文类型上指定IgnoreProperties属性以忽略此属性
这发生在我在L2S设计器中使用的任何数据库表中!
这是什么错误,为什么我会得到它?
您需要使用DataServiceKey属性来装饰您的类.
在马克的博客更多细节在这里,和MSDN博客这里(约多对多的关系,后者的谈判,但它涵盖了DatServiceKey属性).