Un'eccezione non gestita di tipo 'System.StackOverflowException' in mscorlib.dll
Assicurarsi che non si dispone di un infinito ciclo o ricorsione infinita.C# - Entity Framework - Un'eccezione non gestita di tipo 'System.StackOverflowException' in mscorlib.dll
Il codice di seguito viene chiamato su un successo di questo metodo:
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();
}
Al ritorno si chiama nel modello di entità e cerca di riempire tutti gli oggetti estranei digitati (oggetti figlio). Lo schema è [1 azienda ha 0 per molti prodotti venduti]. Per qualche ragione, la chiamata nel seguente codice appena cascate su se stessa:
[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);
}
}
}
Come si può vedere, il primo metodo effettua una chiamata al secondo metodo. Il secondo metodo sembra chiamarsi all'infinito.
Come risolvere questo problema in EF?
mi sembra un problema con i mapping – hackerhasid
Cosa sono tutti i nomi completi? Rendono inutilmente difficile capire cosa sta succedendo. –
i nomi completi provengono dalla generazione di MS del codice per EF ... –