Прокси-сервер POCO сериализации с WCF

Когда я запускаю свою службу, я получил исключение:

Сервер обнаружил ошибку при обработке запроса. Сообщение об исключении: «Невозможно сериализовать параметр типа System.Data.Entity.DynamicProxies.Cosik_14C2 ...» (для операции «GetCosik», контракт «ICosikService»), поскольку это не точный тип «Project.Domain.Entities.Cosik. 'в сигнатуре метода и не входит в коллекцию известных типов. Чтобы сериализовать параметр, добавьте тип в коллекцию известных типов для операции с помощью ServiceKnownTypeAttribute. '. См. Журналы сервера для более подробной информации.

Я новичок в службах WCF и Entity Framework и буду признателен за любую помощь / предложения.

Я использую Entity Framework 4.1. Используя сначала код, я создал базу данных с двумя таблицами:

[DataContract(IsReference=true)]
public class Cosik
{
    [DataMember]
    public int cosikID { get; set; }

    [DataMember]
    public string title { get; set; }

    [DataMember]
    public int DifficultyID { get; set; }
    [DataMember]
    public virtual Difficulty Difficulty { get; set; }
}

[DataContract(IsReference=true)]
public class Difficulty
{
    [DataMember]
    public int DifficultyID { get; set; }

    [DataMember]
    [Required]
    public string NameToDisplay { get; set; }
}

Затем я создал приложение службы WCF и сделал его RESTful. Ниже приведен код интерфейса:

[ServiceContract]
public interface ICosikService
{
    [OperationContract]
    [ApplyDataContractResolver]
    [WebGet(UriTemplate = "/cosik")]
    Cosik GetCosik();
}

и реализация этого контракта

public class RecipeService : IRecipeService
{
//repository of Cosik entities - stores collection of all
//Cosik entities that can be queried from DB
private ICosikRepository cosikRepo;
...

public Cosik GetCosik()
    {
        Cosik c = cosikRepo.GetById(1);
        return c;
    }

Я реализовал класс ApplyDataContractResolverAttribute, указанный на: http://msdn.microsoft.com/en-us/library/ee705457.aspx и в метод GetCosik добавлена ​​аннотация [ApplyDataContractResolver]. Однако это не помогло.

Есть предложения, что я пропустил?

5
задан anetafr 17 January 2012 в 20:07
поделиться