C# 4.0 EF 4.1 POCO中递归加载的堆栈溢出

C# 4.0 EF 4.1 POCO中递归加载的堆栈溢出,c#-4.0,entity-framework-4.1,C# 4.0,Entity Framework 4.1,我有一个EF 4.1 POCO等级,包括车辆和车主 当我加载VehicleOwner(包括车辆)时,车辆仍会加载VehicleOwner,当您使用映射器时,它最终会出现堆栈溢出异常 下面是代码示例 public class VehicleOwner : IVehicleOwner { [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity),ScaffoldColumn(false)] public int Veh

我有一个EF 4.1 POCO等级,包括车辆和车主

当我加载VehicleOwner(包括车辆)时,车辆仍会加载VehicleOwner,当您使用映射器时,它最终会出现堆栈溢出异常

下面是代码示例

public class VehicleOwner : IVehicleOwner
    {

    [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity),ScaffoldColumn(false)]
    public int VehicleOwnerId { get; set; }
    [Required,DisplayName("First Name")]
    public string FirstName{ get; set; }
    [Required,DisplayName("Last Name")]
    public string LastName { get; set; }

    public virtual ICollection<Vehicle> Vehicles { get; set; }

}

public class Vehicle
{
    public Vehicle()
    {
        this.RecoveredVehicles = new HashSet<RecoveredVehicles>();
    }

    [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int VehicleId { get; set; }
    [DisplayName("Identification Number")]
    public string IdentificationNumber { get; set; }
    [Required]
    [DisplayName("Owner ID")]
    public int VehicleOwnerId { get; set; }
    [Required]
    [ScaffoldColumn(false)]
    public byte[] RowVersion { get; set; }


    public virtual VehicleOwner VehicleOwner { get; set; }
    public virtual ICollection<RecoveredVehicle> RecoveredVehicles { get; set; }
}
//当我这样做时,车辆会被填充,当你展开车辆时,车主会再次被填充

public VehicleOwner GetVehicleOwner(int vehicleOwnerID)
{
   objDataContext.Configuration.ProxyCreationEnabled = false;
   return (from p in objDataContext.VehicleOwners.Include("Vehicles") where p.VehicleOwnerId == vehicleOwnerID select p).FirstOrDefault<VehicleOwner>();        
}
有什么方法可以防止这种递归循环吗


谢谢

没有递归循环。车辆指向原始车主。这只是反向引用,只有在删除反向引用导航属性时才能避免。

谢谢,我正在为poco设计映射程序,并且出现stackoverflow异常。我想我会回复automapper。谢谢你的评论。我现在正在使用AutoMapper,映射还可以,但是当从WCF返回映射的DTO时,我收到了以下错误消息-基础连接已关闭:连接意外关闭。感谢您的评论。我现在正在使用AutoMapper,映射正常,但是当从WCF返回映射的DTO时,我收到了以下错误消息-基础连接已关闭:连接意外关闭。谢谢你的评论。我现在正在使用AutoMapper,映射正常,但是当从WCF返回映射的DTO时,我收到了以下错误消息-基础连接已关闭:连接意外关闭。但是当我通过循环从WCF返回的值将车辆中的VehicleOwner更改为null时。