WCF是否可以传输EF的虚拟属性?

时间:2011-05-12 02:24:56

标签: wcf entity-framework

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; }
}

我的WCF上已经有Include

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

但我收到了这个错误:

  

基础连接已关闭:   连接已关闭   出乎意料。

如果我不使用virtual

,该错误就会消失

如果它对任何人感兴趣,使用virtualFetch组合时我在NHibernate上没有遇到任何错误

[更新时间: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 个答案:

答案 0 :(得分:9)

让问题者本人(@GreenLantern)给出的解决方案更清楚(也许是问题)给在这篇文章中结束的任何人......

问题:序列化具有虚拟属性的对象

解决方案:将您的DBContext对象的Configuration.ProxyCreationEnabled设置为false。

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