Я использую Entity Framework 6 с первой базой данных с существующей базой данных, но имею проблемы с отображением моих объектов в таблицы базы данных.Code-first: сопоставление сущностей с существующими таблицами базы данных
Как правило, я бы использовал подход, основанный на базе базы данных, и создавал код сущности и контекста, но использование конструктора стало огромной болью.
Я установил Database.SetInitializer (null), поскольку я не хочу, чтобы EF менял мою схему.
Схема базы данных:
Код-первых:
public class Project
{
public int ProjectId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public class ReleaseControlContext : DbContext
{
public ReleaseControlContext()
: base(ConfigurationManager.ConnectionStrings["ReleaseControl"].ConnectionString)
{
Database.SetInitializer<ReleaseControlContext>(null);
}
public DbSet<Project> Projects { get; set; }
}
телефонный код:
using(var context = new ReleaseControlContext())
{
var projects = context.Projects.ToList();
}
Следующая исключение:
SqlException: Недопустимое имя объекта 'dbo.Projects'.
Это потому, что моя таблица базы данных Project и не Проекты. Я не хочу переименовывать мой контекст DbSet<Project>
в «Проект», потому что это было бы семантически неправильно.
Вопрос:
Должен ли я использовать беглые аннотации API/данные для сопоставления между таблицей базы данных проекта и DbSet<Project> Projects
коллекцией?
Я wonderung, почему он не работает ; Таблицу следует называть «Проекты», но все же, как вы сказали, вы можете использовать аннотацию Data для создания имени [Таблица («Проекты»)]. –
попробуйте вызвать инициализатор перед созданием DBContext; Поместите его где-нибудь снаружи. –