Когда я запускаю свою службу, я получил исключение:
Сервер обнаружил ошибку при обработке запроса. Сообщение об исключении: «Невозможно сериализовать параметр типа 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]. Однако это не помогло.
Есть предложения, что я пропустил?