Подтвердить что ты не робот

Entity Framework 4 Ошибка только для кода "Несколько наборов объектов для каждого типа не поддерживаются"

У меня есть два POCO с кодом только с использованием EF4 и последнего CTP, работающего против существующей устаревшей базы данных. Запуск запроса LINQ в PocoA работал до тех пор, пока я не добавил свойство ниже к этому объекту, я пытался добавить отношения.

public virtual PocoB pocoB { get; set; }

Как только я это сделал, я начал получать следующую ошибку:

Multiple object sets per type are not supported. The object sets 'PocoA_DbSet' and 'PocoB_DbSet' can both contain instances of type 'PocoA'.

Итак, я подумал, что моя проблема в том, что я не определял отношения, и эта устаревшая база данных использовала префикс "fk/pk" вместо суффикса "Id" на основном и внешнем ключах. Поэтому я добавил следующие аннотации данных к виртуальному методу, указанному выше, без изменений в поведении:

[RelatedTo(Property="PocoB", ForeignKey="fkPocoB")]

Я действительно в недоумении за то, что нужно изменить, чтобы сделать эту работу.

4b9b3361

Ответ 1

Эта ошибка возникает, если ваш класс DbContext предоставляет несколько DbSet <T> где T встречается более одного раза. В принципе, он не может понять, к какому DbSet принадлежит экземпляр типа T.

В коде ошибка, вероятно, выглядит так:

public class MyContex : DbContext {
    public DbSet<PocoA> PocoA { get; set; }
    public DbSet<PocoA> PocoB { get; set; } ...

где эта конечная строка должна быть DbSet <PocoB> вместо DbSet <PocoA>

TL; DR - вы скопировали свойство и забыли изменить параметр типа в DbSet.