2015-03-20 4 views
1

У меня возникла проблема с моей службой WCF. ВотWCF - Entity Framework - ERR_CONNECTION_RESET

[OperationContract] 
    [WebGet(UriTemplate = "/needs", ResponseFormat = WebMessageFormat.Json)] 
    List<CustomerNeed> getAllCustomerNeeds(); 

Когда я иду на странице, которые называют эту услугу, я получил эту ошибку

GET http://localhost:666/rest/Service1.svc/needs net::ERR_CONNECTION_RESET 

Когда я пытаюсь вернуть строку вместо списка, он работает.

CustomerNeed - это класс, генерирующий мою базу данных через EntityFramework.

В моем служении я вызываю другой метод, который находится в другом классе;

public List<CustomerNeed> getAllCustomerNeeds() 
    { 
     var needs = from cn in db.CustomerNeeds 
        select cn; 

     List<CustomerNeed> list = new List<CustomerNeed>(); 

     foreach (CustomerNeed cusN in needs) 
     { 
      list.Add(cusN); 
     } 
     return list; 
    } 

Возможно, это потому, что у меня есть внешний ключ в моем столе CustomerNeed?

Когда я делаю «LINQ to entity» для импорта моей базы данных, мне нужно импортировать таблицы, созданные из-за отношения многих?

+0

Вы можете показать свою реализацию, а не ваш контракт? – Kritner

+0

Я добавляю реализацию, которая является только запросом LINQ – Weedoze

ответ

1

Я порекомендую вам создать простой пользовательский класс, который будет представлять собой объект базы данных CustomerNeeds, инициировать этот объект на стороне сервера и перейти к клиентскому приложению. Это может помочь вам избежать этой проблемы, а также рекомендуется использовать способ передачи данных через службы WCF.

В этом случае вам необходимо выполнить следующие шаги: 1) Создать открытый класс CustomerNeeds и пометить его атрибутом DataContract. Например:

[DataContract] 
public class CustomerNeeds 
{ 
    [DataMember] 
    public SomeDataType PropertyName {get; set;} 
} 

2) Инициировать этот объект на службе, изменения возвратного типа данных в getAllCustomerNeeds() метод из класса сущностей к вновь созданному классу CustomerNeed и передать эти данные в Clien

и что все.

+0

Интересно, может ли это быть зависеть от используемой версии сущности. Я использую EF с WCF и не должен был украшать ни один из моих автогенерированных классов моделей такими атрибутами (и это работает) – Kritner

+0

Вот почему я не создал классы DataContract. Я видел в интернете, что с EF это не было необходимо. Так или иначе, я попробую так – Weedoze

+0

Итак, я использую DataContract now + Entities, и он работает. Я просто добавляю метод, который переводит сущность из моей базы данных в мой datacontract – Weedoze

0

Вы не указали, где/что такое db, но я предполагаю, что если вы используете инфраструктуру сущностей, так как ваш тег подразумевает, что это контекст сущностей. Возможно, у вас могут возникнуть проблемы с контекстом, который уже настроен или не обновлен правильно (хотя я бы ожидал, что вы получите немного другую ошибку, если это так).

Похоже, что вы переживаете некоторые ненужные шаги в вашей функции, я думаю, что будет что-то подобное будет работать:

public List<CustomerNeed> getAllCustomerNeeds() 
{ 
    using (var db = new YourContext()) // plug in your context object 
    { 
     return db.CustomerNeeds.ToList(); 
    } 
} 

Кроме того, когда вы говорите, она «работает как строку» вы возвращая что-то маленькое, как «привет мир»? вам может потребоваться взглянуть на вашу конфигурацию WCF, чтобы убедиться, что она может обрабатывать количество данных, которые вы пытаетесь передать туда и обратно.

Надеюсь, это поможет!

Смежные вопросы