stackoverflow в рекурсивной загрузке в EF 4.1 POCO - PullRequest
0 голосов
/ 24 августа 2011

У меня есть класс EF 4.1 POCO с Vehicle и VehicleOwner.

Когда я загружаю готовую загрузку VehicleOwner, включая Транспортные средства, Транспортные средства все еще загружают VehicleOwner, и когда у вас есть Mapper, это заканчивается Исключением переполнения стека.

Вот пример кода

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

// когда я делаю это, транспортные средства заполняются, а когда вы расширяете Транспортные средства, снова заполняется VehicleOwner.

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

Есть ли способ, которым я могу предотвратить этот рекурсивный цикл.

Спасибо

1 Ответ

0 голосов
/ 24 августа 2011

Нет рекурсивного цикла. Vehicle указывает на оригинал VehicleOwner. Это просто обратная ссылка, и ее нельзя избежать (только если вы удалите свойство обратной ссылки, ссылающееся на него).

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