EntityFramework создает исключение AmbiguousMatchException - PullRequest
0 голосов
/ 16 августа 2010

Настройка: EntityFramework POCO с прокси (+ LazyLoading)

Классы

Component и Part оба реализуют IDataErrorInfo (если это необходимо). Следующий код выдает исключение:

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

Неоднозначное свойство равно ChildComponents, как я могу сказать, пока нет другого свойства с таким именем, его единственное определение:

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

Это переопределено в прокси EF и изменено на что-то вроде

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

Тем не менее, эта проблема только появилась, и я не могу понять, почему сейчас, поскольку никаких реальных изменений не было.

1 Ответ

0 голосов
/ 16 августа 2010

Я исследовал этот вопрос и выяснил, что .NET компилирует индексаторы (например, из IDataErrorInfo) в Item, поэтому вносит некоторую неоднозначность в класс, который называется Item, и любые классы, имеющие такое свойство. Это вызывает проблемы в EF. Эта проблема скрыта в моем коде более глубоко, чем я думал, и не вся информация присутствует в первоначальном посте (в основном тот факт, что класс Component имеет свойство Item).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...