Игнорировать создание/изменение модели для представления SQL с использованием Entity Framework

Если я создам представление SQL и напишу модель для представления этого представления, я все равно захочу, чтобы оно отображалось, чтобы иметь возможность читать данные из представления SQL. Код Add-Migration увидит это как новую таблицу, поскольку структура сущностей (версия 6) не понимает представления.

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


person Csharpfunbag    schedule 25.02.2014    source источник
comment
comment
Я не думаю, что это дубликат, я знаю, что могу использовать код вверх/вниз для управления миграцией, но я бы хотел, чтобы будущие экземпляры кода миграции не оценивали определенные модели (поскольку представляют уже созданные представления) с помощью атрибут, подобный предложению @Mashton ниже.   -  person Csharpfunbag    schedule 26.02.2014


Ответы (3)


добавить номальную миграцию. и после миграции переписать на:

public override void Up()
{
    Sql("CREATE VIEW [viewname] AS SELECT {any select expression} ");
}

public override void Down()
{
    Sql("DROP VIEW [viewname]");
}
person user5168688    schedule 29.07.2015

Из этого ответа SO:

Add-Migration IgnoreViewClasses –IgnoreChanges

(Работает для EF 4.3.1+)

Это создает пустую миграцию, игнорируя любые вновь созданные классы.

person Dunc    schedule 14.01.2015

Вы можете использовать атрибут [NotMapped], чтобы остановить перенос классов кода в базу данных.

person Mashton    schedule 25.02.2014
comment
NotMapped приведет к тому, что свойство не будет ссылаться на столбец в таблице, которую оно представляет, что в данном случае не является желаемой целью. - person Csharpfunbag; 09.03.2014