0

Я получаю ошибку переполнения стека при попытке найти пользователя с настройкой ниже. Я попытался отключить Lazy Loading и Proxy Creation, но я все еще получаю ошибку.Код Первый EF6 Самонаводящийся многоточий выдает ошибку переполнения стека

public class Authority 
{ 
    public int Id { get; set; } 
    public string Domain { get; set; } 
    public string Name { get; set; } 
    public AuthorityTypeEnum Type { get; set; } 
    public virtual List<Authority> Groups { get; set; } 
} 

на создания модели:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); 
     modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); 

     modelBuilder.Entity<Authority>() 
        .HasMany(a => a.Groups) 
        .WithMany(). 
        Map(m => 
         { 
          m.MapLeftKey("UserId"); 
          m.MapRightKey("GroupId"); 
          m.ToTable("UsersGroups"); 
         } 
        ); 

     base.OnModelCreating(modelBuilder); 
    } 

Контекст конструктор:

public Context() 
{ 
    this.Configuration.LazyLoadingEnabled = true; 
    this.Configuration.ProxyCreationEnabled = true; 
} 

Это код, который бросает переполнение стека:

var byUserAndDomain = db.Authorities 
         .FirstOrDefault(a => a.Type == AuthorityTypeEnum.User && a.Domain == MvcApplication.Domain && a.Name == MvcApplication.UserName); 
+0

Я только что заменил MvcApplication.Domain и MvcApplication.UserName с константами, и я все равно получаю ту же ошибку переполнения стека. – RoboKitten

+0

Невозможно воспроизвести. –

ответ

0

Я нашел вопрос. Хотя ошибка была выбрана в строке с выражением Linq, рекурсия происходила во внешней области. Я предполагаю, что кадр сущности имеет самый низкий допуск для рекурсии объектов, с которыми я работаю.