Я использую Entity Framework 4.0Csc.exe бросает «Процесс прерван из-за StackOverflowException» при компиляции
При создании нового класса с чуть более 1k свойствами, которые я получаю проблему после создания пакета миграции. При попытке скомпилировать проект я получаю сообщение «Сбой сборки». "Csc.exe завершился с кодом 255"
При поиске более в детали, я вижу эту Msg в журнале сборки:
Использование "CSC" задачу из сборки «C: \ Program Files (x86) \ MSBuild \ 14,0 \ Bin \ Microsoft.Build.Tasks.CodeAnalysis.dll». 1> Задача «Csc» 1> C: \ Program Files (x86) \ MSBuild \ 14.0 \ bin \ csc.exe/noconfig/nowarn: 1701,1702,2008/nostdlib +/platform: anycpu32bitpreferred/errorreport: prompt/warn : 4/define: DEBUG; TRACE/errorendlocation/preferreduilang: en-US/highentropyva +/reference: "C: ... 1>
1> Процесс завершается из-за исключения StackOverflow. 1> C: \ Program Files (x86) \ MSBuild \ 14.0 \ bin \ Microsoft.CSharp.Core.targets (67,5): ошибка MSB6006: «csc.exe» завершена с кодом 255.
Очевидно, что метод Up() в сценарии миграции создает действительно большой метод CreateTable.Я предполагаю, что это проблема.Я не совсем уверен, однако.
Действительно ли невозможно использовать класс с этим большим количеством полей при использовании EF?
Обновление: Класс модели находится в отдельном проекте и компилируется в порядке. Проблема связана с методом миграции.
Он также автоматически сгенерирован и выглядит примерно так:
public partial class CustomClass : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.GeneratedClasses",
c => new
{
RowId = c.Int(nullable: false, identity: true),
RecordTime = c.DateTime(nullable: false),
Prop1 = c.Decimal(nullable: false, precision: 18, scale: 2),
Prop2 = c.Decimal(nullable: false, precision: 18, scale: 2),
Prop3 = c.Decimal(nullable: false, precision: 18, scale: 2),
...
PropN= c.Decimal(nullable: false, precision: 18, scale: 2),
})
.PrimaryKey(t => t.RowId);
}
1k недвижимость в классе?!? o_O – andreasnico
Действительно. Не то, что я делаю каждый день, вспоминаю вас. – WPFUser
если данные больше, то вы получите исключение из памяти ... исключение переполнения стека означает, что существует циклический вызов или рекурсивный вызов, который заканчивается получением переполнения переполнения стека – Viru