Я использую Entity Framework 6 в первую очередь с существующей базой данных, но имею проблемы с отображением моих объектов в таблицы базы данных.
Как правило, я бы использовал подход, основанный на базе базы данных, и создавал код сущности и контекста, но использование дизайнера стало огромной болью.
Я установил Database.SetInitializer(null), так как я не хочу, чтобы EF менял мою схему.
Схема базы данных:
Code-первых:
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, а не Projects. Я не хочу переименовывать мой контекст DbSet<Project>
в "Project", потому что это было бы семантически неверно.
Вопрос:
Нужно ли использовать текущие аннотации API/данных для сопоставления между таблицей базы данных проекта и коллекцией DbSet<Project> Projects
?