Entity Framework: An expression is too long
От: dmitry_npi Россия  
Дата: 17.01.17 10:14
Оценка:
Добрый день

В проекте используется Entity Framework по варианту DataBase First, то есть используется генерация кода по базе.
И для ускорения старта используется генерация Views. Так вот, старый компилятор (VS2012/2013) нормально эту простыню собирал, а вот новые (VS2015+) уже не могут:

error CS8078: An expression is too long or complex to compile


И действительно, там код типа такого:

if(index==0)
{
  // ...
}
else
{
   if(index==1)
   {
     // ...
   }
   else
   {
      if(index==2)
      { 
         // и так далее, штук 800
      }
   }
}


Как можно выйти из ситуации, чтобы перейти на новые версии студии?
Атмосферная музыка — www.aventuel.net
Отредактировано 17.01.2017 11:42 AndrewVK . Предыдущая версия .
entity framework ef
Re: Entity Framework: An expression is too long
От: Слава  
Дата: 17.01.17 10:41
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>error CS8078: An expression is too long or complex to compile

_>
_> // и так далее, штук 800

_>Как можно выйти из ситуации, чтобы перейти на новые версии студии?


Сменить if на switch? Разбить по функциям?
Re[2]: Entity Framework: An expression is too long
От: dmitry_npi Россия  
Дата: 17.01.17 12:08
Оценка:
Здравствуйте, Слава, Вы писали:


_>>Как можно выйти из ситуации, чтобы перейти на новые версии студии?


С>Сменить if на switch? Разбить по функциям?


Код генерируется инструментом от Microsoft.
Атмосферная музыка — www.aventuel.net
Re[3]: Entity Framework: An expression is too long
От: TK Лес кывт.рф
Дата: 17.01.17 17:54
Оценка: :))
Здравствуйте, dmitry_npi, Вы писали:

_>>>Как можно выйти из ситуации, чтобы перейти на новые версии студии?

С>>Сменить if на switch? Разбить по функциям?

_>Код генерируется инструментом от Microsoft.


Так, посмотрите, может быть есть уже другой более современный подход
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[3]: Entity Framework: An expression is too long
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.01.17 20:09
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Код генерируется инструментом от Microsoft.


Так может написать тогда в поддержку МС?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re: Entity Framework: An expression is too long
От: kov_serg Россия  
Дата: 18.01.17 08:18
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Добрый день


_>В проекте используется Entity Framework по варианту DataBase First, то есть используется генерация кода по базе.

_>И для ускорения старта используется генерация Views. Так вот, старый компилятор (VS2012/2013) нормально эту простыню собирал, а вот новые (VS2015+) уже не могут:

_>

_>error CS8078: An expression is too long or complex to compile

Упрости
  if (index<400) { // 0..399
     if (index<200) { // 0..199
       ...
     } else { // 200..399
        if (index<250) { // 200..249
           ...
        } else { // 250..399
           ...
        }
     } else { // 400..800
        ...
     }
  }

    Action scope = () => {
        if (index == 1) { ... return; }
        if (index == 2) { ... return; }
        ...
        if (index == 800) { ... return; }
    };
    scope();

    
    switch (index) {
    case 1: { ... } break;
    case 2: { ... } break;
    case 3: { ... } break;
    }

    Dictionary<int,Action<MyContext>> dict = init();
    static Dictionary<int,Action<MyContext>> init() {
        var dict = new Dictionary<int,Action<MyContext>>();
        dict[1] = ctx => { ... };
        dict[2] = ctx => { ... };
        dict[3] = ctx => { ... };
        ...
        return dict;
    }

    void action(int index) {
        ...
        dict[index](ctx);
        ...
    }

_>Как можно выйти из ситуации, чтобы перейти на новые версии студии?
Используй рабочие студии, а не модные улучшенные.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.