Это ошибка? : Я получаю «Тип ... не является сложным типом или типом сущности» в моей службе данных WCF с использованием поставщика отражений - PullRequest
1 голос
/ 07 июня 2010

При вызове запроса к службе данных я получаю это сообщение об ошибке внутри канала XML:

  <m:error>
    <m:code></m:code>
    <m:message xml:lang="nl-NL">Internal Server Error. The type 'MyType' is not a complex type or an entity type.</m:message>
  </m:error>

Когда я использую пример, описанный здесь в статье «Как: создать службу данных с помощью поставщика отражений (службы данных WCF)» * http://msdn.microsoft.com/en-us/library/dd728281(v=VS.100).aspx, он работает как положено.

Я создал службу в веб-проекте .NET 4.0. Мой класс контекста данных возвращает объект запроса, производный от LINQExtender (http://linqextender.codeplex.com/). Когда я выполняю объект запроса в модульном тесте, он работает как положено.

Мой тип сущности определен как:

[DataServiceKey("Id")]
public class Accommodation
{
    [UniqueIdentifier]
    [OriginalFieldName("EntityId")]
    public string Id { get; set; }

    [OriginalFieldName("AccoName")]
    public string Name { get; set; }
}

(атрибуты UniqueIdentifier и OriginalFieldName используются LINQExtender)

Кто-нибудь знает, является ли это ошибкой в ​​службах данных WCF или я что-то не так делаю?

Ответы [ 3 ]

0 голосов
/ 19 января 2011

Для этого есть решение:

http://www.sellsbrothers.com/posts/details/12665

0 голосов
/ 07 октября 2011

Нельзя использовать строку типа для идентификатора поля. Это приводит к ошибке « не сложный тип или тип сущности », которую вы получаете. Попробуйте использовать int и убедитесь, что int уникален для каждой сущности в вашем запросе. Например, вы можете вычислить значение хеш-функции для вашего идентификатора строки и использовать его вместо int ID.

0 голосов
/ 25 августа 2010

В .NET 4 есть известная ошибка, похожая на описанную вами проблему (поскольку вы запутываете MyType, не можете быть уверены на 100%).

От Ptatik Patel (Microsoft):

Это известная проблема с WCF Службы данных. Как сказал Джо, чтобы сделать эта работа, вам нужно отключить генерация прокси - довольно плохо. Сожалею, у меня нет лучшего ответа на это точка, но уже слишком поздно, чтобы исправить это в VS 2010 RTM.

...