2009-03-06 3 views
18

У меня возникла странная ошибка при использовании linq-to-sql с сервисами данных ado.net. У меня есть приложение silverlight, которое подключается к удаленной базе данных. Сначала я добавил класс linq-to-sql и перетащил таблицу в конструктор. Затем я добавил службу данных ADO.NET, обновил ссылку DataService, чтобы указать на контекст данных L2S.Службы данных ADO.NET с Linq-to-SQL

Составлено без проблем.

Когда я открываю службу в IE я сразу получаю сообщение об ошибке, так что я добавить следующий атрибут службы данных:

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

Это вызывает подробное сообщение об ошибке:

Исключение message is 'В типе контекста данных DataClasses1DataContext, существует верхнее свойство IQueryable' table1 ', тип элемента которого не является типом сущности. Убедитесь, что IQueryable свойство типа объекта или указать атрибут IgnoreProperties от типа контекста данных игнорировать это свойство

это происходит в любой таблице базы данных я использую в конструкторе L2S!

Что это за ошибка и почему я ее получаю?

+0

Доступ к каждой из конечных точек можно получить по адресу http: // localhost/{ServiceName}/{EndPointName} – jdiaz

ответ

21

Вам необходимо украсить ваши классы атрибутом DataServiceKey.

Подробнее о блоге Марка here и блоге MSDN here (последний рассказывает о многих отношениях во многих отношениях, но он охватывает атрибут DatServiceKey).

+0

, который многое объяснял, но почему он не показывает мне сущности в формате XML? Он просто говорит таблицу DEFAULT1. Я даже использовал config.SetEntitySetAccessRule ("table1", EntitySetRights.All); – jdiaz

+0

Также, если в таблице нет первичного ключа, как узнать, какое свойство установить как DataServiceKey? – jdiaz