Возможно ли, чтобы WCF транспортировал виртуальные свойства EF? - PullRequest
12 голосов
/ 12 мая 2011

Возможно ли для WCF транспортировать виртуальные свойства?

В моем проекте есть следующие классы:

[DataContract]
class Country
{
    [Key, DataMember] public int CountryId { get; set; }
    [DataMember] public string CountryName { get; set; }
}


[DataContract]
class Employee
{
    [Key, DataMember] public int EmployeeId { get; set; }
    [DataMember] public string EmployeeName { get; set; }
    [DataMember] public int ResidingInCountryId { get; set; }

    [ForeignKey("ResidingInCountryId"), DataMember]
    public virtual Country ResidenceCountry { get; set; }
}

У меня уже есть Include в моем WCF:

db.Employees.Include("ResidenceCountry").Where(x => x.EmployeeId == 1);

Но я получил эту ошибку:

Основное соединение было закрыто: Соединение было неожиданно закрыто.

Эта ошибка исчезла, если я не используюvirtual

Если это кого-то заинтересует, я не сталкиваюсь с ошибкой в ​​NHibernate при использовании virtual и Fetch combo

[ОБНОВЛЕНИЕ: 2011-05-1215:05]

Я решил свою проблему, используя решение здесь: http://www.gavindraper.co.uk/category/entity-framework/

Единственная разница в том, что я использую this.Configuration.ProxyCreationEnabled = false; вместо this.ContextOptions.ProxyCreationEnabled = false;.Я использую Entity Framework 4.1

1 Ответ

9 голосов
/ 21 августа 2014

Просто сделать решение, данное выше самим автором (@GreenLantern), более понятным (и, возможно, проблемой) любому, кто заканчивает этот пост ...

Проблема: сериализация объектов с виртуальными свойствами

Решение: установите для параметра Configuration.ProxyCreationEnabled объекта DBContext значение false.

var dbContext = new YourEntityModelObject();
dbContext.Configuration.ProxyCreationEnabled = false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...