Служба WCF WebHttp, использующая POCO из EntityFramework 4.1 - dbContext - PullRequest
1 голос
/ 21 сентября 2011

Я пытаюсь вернуть POCO в службе WCF WebHttp.Я использую EntityFramework 4.1 и генерирую объект. Созданный объект создается с использованием генератора DbContext.

Все работает хорошо с EF.Я могу запросить базу данных и работать с сущностями.Проблема исходит от моего сервиса WebHttp.Когда я пытаюсь вернуть список этих сущностей, я получаю ошибку 324 (пустой ответ), а когда я пытаюсь вернуть один объект сущности, я получаю ошибку WCF - «Ошибка запроса».Страница справки службы выглядит нормально, а примеры ответов в порядке.

Я протестировал службы, возвращая только имя субъекта, меняя тип возвращаемых служб на List и string.Это прекрасно работает.

Я предположил (просмотрев учебник по службе WCF WebHttp ), что нет необходимости добавлять [Serialize ()] или другие атрибуты к сущностям.

Я заблудился, как вы, почему служба не вернет сущность.

Спасибо за любую помощь.ROB

Вот код службы ...

[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class SearchService
{

    [WebGet(UriTemplate = "Students")]
    public List<coop_Students> GetStudents()
    {
        List<string> ret = new List<string>();

        CottageDataEntities db = new CottageDataEntities();
        var students = from s in db.coop_Students
                       where s.status == "enrolled"
                       orderby s.lastname, s.firstname
                       select s;
        return students.ToList();

    }

    [WebGet(UriTemplate = "Echo/{text}")]
    public string Echo(string text)
    {
        return "Hello " + text;
    }

    [WebGet(UriTemplate = "Students/{studentID}")]
    public coop_Students GetStudent(string studentID)
    {
        using (CottageDataEntities db = new CottageDataEntities())
        {
            int id = int.Parse(studentID);
            var student = db.coop_Students.FirstOrDefault(s => s.studentID == id);
            return student;
        }
    }
}
...