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

Можно ли для 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

[UPDATE: 2011-05-12 3:05 PM]

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

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

Ответ 1

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

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

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

var dbContext = new YourEntityModelObject();
dbContext.Configuration.ProxyCreationEnabled = false;