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