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

Entity Framework Дубликат имени типа в сборке (6.1.0)

Я не уверен, что происходит, но при выполнении запроса я получаю следующее исключение. "Дублировать имя типа в сборке". Я не смог найти решение в Интернете. Я решил проблему, удалив структуру сущности из всех проектов в решениях и переустановив с помощью самородка. Тогда внезапно исключение возвращается. Я проверил схему таблицы снова и снова и не нашел ничего плохого.

Это запрос, вызывающий исключение.

    var BaseQuery = from Users in db.Users
            join UserInstalls in db.UserTenantInstalls on Users.ID equals UserInstalls.UserID
            join Installs in db.TenantInstalls on UserInstalls.TenantInstallID equals Installs.ID
            where
                Users.Username == Username
                && Users.Password == Password
                && Installs.Name == Install
            select Users;

    var Query = BaseQuery.Include("UserTenantInstalls.TenantInstall");

    return Query.FirstOrDefault();

Как я уже упоминал ранее, тот же запрос работал раньше. Данные не изменились, и код не изменился.

4b9b3361

Ответ 1

Как работа, это происходит только в том случае, если вы используете одношаговое использование отладчика. Если вы разместите точку останова на нескольких линиях ниже вашего источника, ошибка не появится.

Я не удалил, и это по крайней мере позволяет мне продолжить работу.

Ответ 3

В то же самое время в моем WCF webservice. Просто очистите свое решение и перестройте его. Это должно решить проблему.

Ответ 4

Ничего из вышеперечисленного не работает для меня, однако в ссылке, указанной ранее, я сделал это, и это сработало для меня. Это было представлено "bunomonteiro"

Чтобы исправить "Дублировать имя типа в сборке"

У меня была аналогичная проблема. Я проверил все мои модели/классы, и я не использовал повторяющиеся имена для типов. Я удалил сборки и регенерировал модель и объект контекста из базы данных и все еще имел ту же проблему.

След, полученный в Visual Studio "Дети не могут быть оценены". РЕШЕНИЕ состоит в том, чтобы добавить .ToList(); или ToArray(); или ToDictionary() и т.д., в ваш запрос. и т.д.

например. var query = context.TableName.Where(x = > x.name == "CodeRealm" ). ToList();

PingBack - http://entityframework.codeplex.com/workitem/1898

bunomonteiro написал 18 июл в 3:37

Ответ 5

Это, по-видимому, исправлено в 6.1.3.

Вот как я пришел к такому выводу:

Я надежно воспроизвел эту проблему в предыдущей версии (возможно, 6.1.2). Восстановление моего решения не исправило. Пошаговое выполнение с точками останова до и после воспроизводило проблему, имея точки останова только после того, как точка исключения не вызвала исключения, как указано здесь в других ответах. [Summary: У меня, похоже, такая же проблема, как и у всех остальных с более старой версией EF.]

Учитывая точно такие же контрольные точки и без повторной загрузки или что-то в этом роде, я просто установил обновление в Entity Framework. Это устранило проблему, когда я мог свободно перемещаться с точками останова до и после "проблемного кода", без каких-либо исключений.

Поскольку проблема является случайной и темпераментной для условий, трудно сказать окончательно, что обновление для EF специально решает проблему, но пока что так хорошо.

Ответ 6

У нас была такая же проблема, что и вчера, чтобы избавиться от нее. Используя EF 6.1.0, ошибка при выполнении запросов linq к объектам аналогична предыдущей. Мое решение состояло в том, чтобы остановить IIS Express, очистить решение, удалить EF из всех проектов в решении, закрыть VS2012, удалить все пакеты папок/файлов в рамках решения, а затем перезапустить VS2012, добавить EF 6.1.0 там, где это необходимо, компиляция, ошибка исчезла.

Ответ 7

С EF 6.1 я столкнулся с той же проблемой.

В моем случае моя модель имеет таблицу саморекламы. Поэтому я обнаружил, что это может быть вызвано следующими двумя причинами.

  • //Database.SetInitializer(нуль) Просто закомментируйте следующую строку в конструкторе DBContext.
  • сохранить внешний ключ и соответствующее его навигационное свойство согласованным или просто сохранить свойство навигации null

Ответ 8

Должен быть исправлен " выберите" Пользователи "" сегмент кода:

var BaseQuery = from Users in db.Users
        join UserInstalls in db.UserTenantInstalls on Users.ID equals UserInstalls.UserID
        join Installs in db.TenantInstalls on UserInstalls.TenantInstallID equals Installs.ID
        where
            Users.Username == Username
            && Users.Password == Password
            && Installs.Name == Install
        select Users;

Код коррекции:

select new { ID=Users.ID, F1= Users.forExampleField1,
             F2= UserInstalls.forExampleFild1, 
             F3= Installs.forExampleFild1 , 
             F4= Installs.forExampleFild2 };

Причина:

Поля внешнего ключа в классе присутствуют, и "Linq" не могут удалить их, что было следующей ошибкой:

Повторяющееся имя типа внутри сборки

(Конечно, эта проблема Fault "структура сущности"!)

Я - полное объяснение по этому вопросу, Но, к сожалению, мой английский не очень хорош, и мне очень сложно объяснить специализацию, потому что я понимаю, что многие люди не понимают, что я имею в виду. Я прошу прощения за это.

Ответ 9

Я тоже сталкивался с подобной проблемой, Я исправил его, преобразов результирующий набор в List i.e

var registers = registerRepository.All.ToList(). Где (a = > a.AreaLatitude.Equals(0));

Преобразование результата ToList решил проблему, чтобы продолжить итерацию.

и решил проблему.

Ответ 10

Оказалось, что перезагрузка сервера была все, что было.