Некогерентная ошибка: неверное имя объекта - PullRequest
0 голосов
/ 05 июля 2011

Я переименовал таблицу из своей базы данных. Поэтому я также переименовал свою сущность (из Favori в FavorisAffaire). Скомпилировано успешно. Но теперь, когда я запускаю свое приложение, я получаю сообщение об ошибке ниже:

Неверное имя объекта 'dbo.FavorisAffaires'

У меня не было этого FavorisAffaires в моем решении!

У меня есть FavorisAffaire (без окончаний). Я подозреваю, что что-то не так на фоне моего решения ... Я уже пробовал очистку с последующим перестроением, но проблема все еще там.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 05 июля 2011

Так EF ведет себя по умолчанию.Он использует множественное число имен.Его можно отключить или вы можете принудительно привязать одну сущность к соответствующей таблице, но это все зависит от версии EF, которую вы используете.

Редактировать:

упс, я забылупомяните, что я сначала использовал Entity Framework Code.

Да, вы забыли упомянуть очень важную часть вашего вопроса.

Есть несколько способов сделать это.

Аннотация данных:

[Table("FavorisAffaire")]
public class FavorisAffaire
{ ... }

Или свободное отображение:

modelBuilder.Entity<FavorisAffaire>()
            .ToTable("FavorisAffaire");

Или удаление соглашения о множественном числе (это имеет глобальную область действия, поэтому оно может нарушить сопоставления других существующих таблиц)

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

Как только вы удалите соглашение, убедитесь, что имя DbSet является единственным:

public DbSet<FavorisAffaire> FavorisAffaire { get; set; }

Или просто переименуйте вашу таблицу, потому что таблицы должны быть во множественном числе.

0 голосов
/ 05 июля 2011

В дополнение к ответу Ладислава Мрнки, я предполагаю, что вы не воссоздали свою базу данных после того, как внесли эти изменения. Таким образом, «Code First» сгенерировал имя таблицы для вашей новой сущности, которой раньше не было (точнее, ее, вероятно, назвали «Favoris»). Если вы теперь подключаетесь к базе данных, которая уже имеет старую схему, и вы не приказывали EF воссоздать базу данных, она будет предполагать, что таблица, которую она ищет (FavoriAffairs), присутствует (а это не так).

Если у вас уже есть данные в таблице «Favoris», я предлагаю переименовать ее в «FavoriAffairs», в противном случае позвольте Code First заново создать базу данных. Это делается путем установки конкретной инициализатора базы данных, объясненной здесь: http://davidhayden.com/blog/dave/archive/2011/04/27/DatabaseInitializersEFCodeFirstDatabaseSetInitializer.aspx

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