J'utilise EF 4.0 et POCO. Je suis tombé sur cette erreur lors de l'insertion d'enregistrements dans la base de données.EF 4.0 Dynamic Proxies Objet POCO Ne correspond pas au type de cible
L'accesseur de propriété 'QualityReasonID' sur l'objet 'BI.Entities.QualityReason' a émis l'exception suivante: 'L'objet ne correspond pas au type de cible.'
Des erreurs se produisent sur le Databind à un GridView après avoir enregistré un nouvel enregistrement à la base de données. J'ai identifié ce qui se passe mais je ne suis pas sûr de savoir pourquoi cela se produit ou si j'utilise incorrectement EF/POCO. Toute idée serait appréciée.
L'exception se produit car les types d'objet dans IEnumerable ne sont pas identiques. Les entrées initiales de la table sont de type System.Data.Entity.DynamicProxies.QualityReason_E483AD567288B459706092F1825F53B1F93C65C5329F8095DD1D848B5D039F04} alors que la nouvelle est BI.Entities.QuailtyReason.
Voici comment j'insère le nouvel objet.
public void createQualityReason(QualityReason qReasons)
{
dbcontext.QualityReasons.AddObject(qReasons);
dbcontext.SaveChanges();
}
Je résolu l'erreur en changeant la récupération du code de:
public IEnumerable<QualityReason> fetchQualityReasons()
{
IEnumerable<QualityReason> queryReasons = dbcontext.QualityReasons.AsEnumerable();
return queryReasons;
}
à
public IEnumerable<QualityReason> fetchQualityReasons()
{
IEnumerable<QualityReason> queryReasons = from data in dbcontext.QualityReasons.AsEnumerable()
select new QualityReason
{
QualityReasonID = data.QualityReasonID,
QualityReasonName = data.QualityReasonName
};
return queryReasons;
}
Donc, pour contourner l'erreur, je dois sélectionner dans la classe POCO explicitement chaque fois . C'est comme si je me trompais. Des pensées?
Je pense la question peut avoir plus à voir avec le gridview et la liaison de données que l'EF. –