C# - Платформа Объекта - необработанное исключение типа 'Система. StackOverflowException' произошел в mscorlib.dll

Необработанное исключение типа 'Система. StackOverflowException' произошел в mscorlib.dll
Удостоверьтесь, что у Вас нет бесконечного цикла или бесконечной рекурсии.

Ниже кода назван на успехе этого метода:

internal static List<RivWorks.Model.Negotiation.ProductsSold> GetProductsSoldByCompany(Guid CompanyID)
{
    var ret = from a in _dbRiv.ProductsSold where a.Company.CompanyId == CompanyID select a;
    return ret.ToList();
}

По возврату это звонит в Модель Объекта и пытается заполнить все внешние включенные объекты (дочерние объекты). Схема [1 Компания имеет 0 ко многим ProductsSold]. По некоторым причинам вызов в следующий код просто располагается каскадом на себе:

[global::System.Data.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("RIV_Model", "FK_ProductsSold_Company", "Company")]
[global::System.Xml.Serialization.XmlIgnoreAttribute()]
[global::System.Xml.Serialization.SoapIgnoreAttribute()]
[global::System.Runtime.Serialization.DataMemberAttribute()]
public Company Company
{
    get
    {
        return ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Company>("RIV_Model.FK_ProductsSold_Company", "Company").Value;
    }
    set
    {
        ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Company>("RIV_Model.FK_ProductsSold_Company", "Company").Value = value;
    }
}
/// <summary>
/// There are no comments for Company in the schema.
/// </summary>
[global::System.ComponentModel.BrowsableAttribute(false)]
[global::System.Runtime.Serialization.DataMemberAttribute()]
public global::System.Data.Objects.DataClasses.EntityReference<Company> CompanyReference
{
    get
    {
        return ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Company>("RIV_Model.FK_ProductsSold_Company", "Company");
    }
    set
    {
        if ((value != null))
        {
            ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedReference<Company>("RIV_Model.FK_ProductsSold_Company", "Company", value);
        }
    }
}

Как Вы видите, первый метод звонит второму методу. Второй метод, кажется, называет себя бесконечно.

Как я фиксирую это в EF?

23
задан Ether 22 February 2010 в 05:17
поделиться

5 ответов

После 3-х раз при удалении и восстановлении моей модели с нуля, переполнение стека волшебным образом исчезает.

Следите за ошибкой мастера где-нибудь на линии.

6
ответ дан 29 November 2019 в 03:14
поделиться

Ошибка колокочки происходит из-за бесконечного цикла, которая использует полную память кеша, а затем в конце он показывает ошибку переполнения стека.

Бесконечная петля должна быть остановлена, и это не лучшая практика вызова ту же функции.

Оптимизировать код и попытаться избежать цикла.

-6
ответ дан 29 November 2019 в 03:14
поделиться

Я думаю, вам нужно установить компанию -> Отношение компании, чтобы быть ленивым загруженным.

0
ответ дан 29 November 2019 в 03:14
поделиться

Попробуйте это:

internal static List<RivWorks.Model.Negotiation.ProductsSold> GetProductsSoldByCompany(Guid CompanyID) 
{ 
    var ret = from a in _dbRiv.Company where a.CompanyId == CompanyID select a.ProductsSolds; 
    return ret.ToList(); 
}
1
ответ дан 29 November 2019 в 03:14
поделиться

Я столкнулся с той же самой проблемой при использовании Asp.net Mvc, Sql Server и Linq to Entities. Просматривая стек вызовов, я увидел, что два из моих репозиториев имеют новый вызов репозитория в другом другом репозитории. Пример ...

Repository1.cs

Respository2 repo2 = new Repository2();

Repository2.cs

Repository1 repo1 = new Repository1();

Я думаю, это глупая ошибка с моей стороны, я не совсем уверен в том, что происходит (может, кто-то может здесь вмешаться ...) помимо очевидного, но Я ответил на вызовы репозитория, и теперь все работает нормально.

1
ответ дан 29 November 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: