2010-08-16 3 views
0

La configuration: EntityFramework POCO avec des mandataires (+ LazyLoading)EntityFramework lance AmbiguousMatchException

Component et Part classe les mettre en œuvre IDataErrorInfo (si cela est nécessaire). Le code suivant émet une exception:

// Context is a singleton here 
Context.LoadProperty<Part>(
    partEntity, 
    (e) => e.ChildComponents, 
    MergeOption.OverwriteChanges); 

La propriété ambiguë est ChildComponents que je peux dire mais il n'y a pas d'autre propriété du même nom, la seule définition est la suivante:

public virtual ICollection<Component> ChildComponents { get; set; } 

Ceci est redéfinie dans EF proxy et a changé en quelque chose comme

public virtual EntityCollection<Component> ChildComponents { get; set; } 

Pourtant, cette question vient de paraître et je ne peux pas comprendre pourquoi maintenant il n'y avait pas de réels changements.

+0

Dans mon cas, l'une de mes entités avait une propriété scalaire avec le même nom qu'une propriété d'association, avec seulement une enveloppe différente. Cela a provoqué le 'AmbiguousMatchException'. – Steven

Répondre

0

J'ai étudié cette question et il s'avère que .NET compile des indexeurs (par exemple IDataErrorInfo) en Item, introduisant ainsi une sorte d'ambiguïté dans une classe appelée Item et toutes les classes qui ont une telle propriété. Cela provoque des problèmes dans EF. Ce problème est enfoui dans mon code plus profondément que je ne le pensais et toutes les informations ne sont pas présentes dans la publication initiale (principalement le fait que la classe Component a une propriété Item).

Questions connexes