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();
Как я уже упоминал ранее, тот же запрос работал раньше. Данные не изменились, и код не изменился.
Ответы
Ответ 1
Как работа, это происходит только в том случае, если вы используете одношаговое использование отладчика. Если вы разместите точку останова на нескольких линиях ниже вашего источника, ошибка не появится.
Я не удалил, и это по крайней мере позволяет мне продолжить работу.
Ответ 2
Это новая проблема с EF 6.1.0, и команда EF знает о проблеме:
https://entityframework.codeplex.com/workitem/2228
Ответ 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
Оказалось, что перезагрузка сервера была все, что было.