Ваш вопрос очень неясен.Вы говорите, что генерируете код из своей схемы, и в то же время вы спрашиваете, существует ли способ сначала сопоставить его с кодом.
DbContext API! = Первый подход к коду.Люди должны различаться между отображением Fluent / Annotations и подходом, основанным на коде, когда база данных генерируется из кода.Если вы генерируете код из базы данных, вы, очевидно, используете первый подход к базе данных.
Решение для базы данных сначала: представление базы данных, но оно сделает вашу сущность доступной только для чтения.Имхо у тебя не должно возникнуть проблем, даже если таблица изменится.Если вам нужны только два столбца, и никто не изменит эти два столбца или создаст новые необходимые столбцы, ваш сопоставленный объект все равно должен работать.Если кто-то изменит ваш столбец, не будет эффективного способа избежать взлома вашего кода.
Вы также можете использовать расширенные функции EDMX, такие как QueryView (просмотр в описании отображения) и DefiningQuery (выбор пользователя в описании хранения), ноВероятно, это слишком для вашего сценария.
Решение для первого кода: отключите проверку метаданных модели и инициализацию базы данных.Требуется установить инициализатор на null
:
// Use this code in the application start up
Database.SetInitializer<MyContext>(null);
и удалить IncludeMetadataConvetion
:
public class MyContext : DbContext
{
...
protedte override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<IncludeMetadataConvention>();
}
}
В обоих подходах вы также можете использовать пользовательский запрос SQL или пользовательскую проекцию linq.