Я разрабатываю бизнес-приложение Silverlight, используя службу RIA, которая возвращает объекты POCO (TaskTime и User). С сущностью TaskTime связан объект User.
Я создал доменную службу, которая имеет функцию запроса (GetTimesheet), которая возвращает коллекцию IQueryable сущностей TaskTime, которая отлично работает, если я не пытаюсь также получить связанные сущности пользователя, но как только я включаю атрибуты [Include] и [Association] над свойством «User» в сущности «TaskTime». Я начинаю получать ошибки десериализации, говоря:
Средство форматирования выдало исключение при попытке десериализации сообщения [...] Сообщение InnerException было «Ошибка в строке 1, позиция 266. Элемент» http://schemas.microsoft.com/2003/10/Serilaization/Arrays:anyType' связывается с данными контракта данных http://schemas.datacontract.org/2004/07/Timesheets.Entities:User'. Десериализатор не знает ни одного типа, который соответствует этому контракту. Добавьте соответствующий «Пользователь» в список известных типов ... '
Предполагается, что я использую атрибут 'KnownTypes', но я не могу найти место для размещения того, что устраняет эту ошибку.
Кто-нибудь знает, как решить эту проблему? В «Сгенерированном коде» моего приложения Silverlight я вижу, что оба типа, кажется, созданы правильно, с добавленными атрибутами DataContract и т. Д.
Упрощенные версии моих объектов POCO:
public partial class TaskTime
{
[Key()]
public virtual int ID { get; set; }
public virtual int User_ID { get; set; }
[Include]
[Association("TaskTime_User", "User_ID", "ID", IsForeignKey=true)]
public virtual User User
{
get { return _user; }
set
{
if (!ReferenceEquals(_user, value))
{
var previousValue = _user;
_user = value;
FixupUser(previousValue);
}
}
}
}
public partial class User
{
[Key()]
public virtual int ID { get; set; }
public virtual string Name { get; set; }
}