WCF с ошибкой Entity Framework - PullRequest
1 голос
/ 18 августа 2010

Ошибка: экземпляр ObjectContext был удален и больше не может использоваться для операций, требующих подключения.

Я пытаюсь создать службу WCF с помощью Entity Framework (VS 2010, .NET 4). Когда я запускаю его, я получаю вышеуказанную ошибку.

Я прочитал кое-что о редактировании шаблона T4, но похоже, что он уже имеет

[DataContractAttribute(IsReference=true)]
public partial class Person : EntityObject

и

   [DataMemberAttribute()]
        public global::System.Int32 ID
        {
            get
            {
                return _ID;
            }

Я не уверен, в чем разница между

[DataMemberAttribute()] and [DataMember] 

или

[DataContractAttribute(IsReference=true)] and [DataContract] 

либо.

 public Person GetPersonByID(int id)
        {
            using (var ctx = new MyEntities())
            {
                return (from p in ctx.Person
                        where  p.ID == id
                        select p).FirstOrDefault();
            }
        }

Как WCF и EF работают вместе, правильно?

1 Ответ

2 голосов
/ 18 августа 2010

Есть ли у вас свойства навигации в вашем классе Person? Вы отключили ленивую загрузку? В противном случае он, вероятно, попытается загрузить содержимое для свойств навигации во время сериализации, и это не получится из-за закрытого контекста.

На другие ваши вопросы:

[DataMemberAttribute ()] и [DataMember] совпадают. Это просто более короткое имя.

[DataContractAttribute (IsReference = true)] и [DataContract] не совпадают. IsRefrence позволяет отслеживать циклические ссылки в свойствах навигации. Без этого параметра циклическая ссылка приводит к бесконечной рекурсии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...