Многократные усилия на объекте заставляют Visual Studio терпеть крах, собирая

У меня есть странная проблема, которой озадачили меня полностью.

К сожалению, у меня есть объект области, у которого есть много отношений на нем (я не могу изменить это), по существу, когда я создаю свой вопрос и просто включаю нетерпеливые усилия, после того, как я добавляю определенную сумму, время изготовления увеличивается решительно, пока в конечном счете Visual Studio просто не замораживается и терпит крах. Вопрос довольно прост, он выглядит примерно так:

var query = QueryOver
.Fetch(x => x.Property).Eager
.Fetch(x => x.Property.PropertyA).Eager
.Fetch(x => x.Property.PropertyB).Eager
.Fetch(x => x.Property.PropertyC).Eager
.Fetch(x => x.Property.PropertyD.SubProp).Eager
.Fetch(x => x.Property.PropertyE).Eager
.Fetch(x => x.Property.PropertyF.SubProp).Eager
.Fetch(x => x.Property.PropertyG).Eager
.Fetch(x => x.Property.PropertyH.SubProp).Eager
.Fetch(x => x.Property.PropertyI).Eager
.Fetch(x => x.Property.PropertyJ).Eager
.Fetch(x => x.Property.PropertyK).Eager
.Fetch(x => x.Property.PropertyL).Eager
.Fetch(x => x.Property.PropertyM).Eager
.Fetch(x => x.Property.PropertyN).Eager
.Fetch(x => x.Property.PropertyO).Eager
.Fetch(x => x.Property.PropertyP).Eager
.Where(x => x.Id == 5);
//My fingers got tired there are in reality 33 fetches, 29 involve x.Property

query.Clone()
.Fetch(x => x.Property.PropertyN.ListProperty).Eager
.Future();

query.Clone()
.Fetch(x => x.PropertyO.ListProperty).Eager
.Future();

query.Clone()
.Fetch(x => x.PropertyD.ListProperty).Eager
.Future();

query.Clone()
.Fetch(x => x.PropertyH.ListProperty).Eager
.Future();

var results = query.Future().ToList();

Это находится по существу в псевдо вопрос, на который мы смотрим, если я комментирую раздел усилий, это строит прекрасный (еще медленнее, чем другие проекты), поскольку я некомментирую одно усилие за один раз увеличения времени изготовления, пока в конечном счете Visual Studio не запирается и в конечном счете никогда не заканчивает строить.

У кого-либо есть какая-либо подсказка об этом вообще? Я попытался искать Интернет, но я полностью потерпел неудачу в нахождении любой релевантной информации, в данный момент ленивая погрузка кажется моим единственным выбором. Однако, я действительно любил бы ответ на это.

2
nl ja de
Соглашение состоит в том, что вы отправляете это как ответ и принимаете его - тот способ, которым люди, ищущие позже, будут знать, что этот вопрос решен.
добавлено автор Bridge, источник
Это кажется, что у вас есть последовательный способ воспроизвести Visual Studio и/или проблему компилятора C#. Необходимо сообщить о нем Microsoft Connect.
добавлено автор Oskar Berggren, источник
Я был в состоянии заставить этот вопрос строить теперь, преобразовывая его в использование API критериев. Я думаю, что проблема относится к lambdas/funcs в Visual Studio
добавлено автор Lee, источник

1 ответы

Так, если проблема состоит в том, что у компилятора есть ограничение на размер цепей метода, решение (теоретически) было бы просто:

var query = QueryOver.Of();
query = query.Fetch(x => x.Property).Eager;
query = query.Fetch(x => x.Property.PropertyA).Eager;
query = query.Fetch(x => x.Property.PropertyB).Eager;
query = query.Fetch(x => x.Property.PropertyC).Eager;
// etc
2
добавлено
Да, это, вероятно, работало бы также Doh!
добавлено автор Lee, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot