У меня есть таблица "IncomingChecks" в моей базе данных. Сначала я создал его с помощью EF Code. Теперь я добавил представление в свою базу данных на основе этой таблицы с именем «ViewIncomingChecks» с помощью Sql Server Management Studio, и я хочу использовать ее данные в своем приложении с помощью Entity Framework. Я скопировал класс модели, изменил его имя и добавил в контекст:
public class ViewIncomingCheck
{
[Key]
public int Id { get; set; }
//...
}
public class CheckDataContext : DbContext
{
public virtual DbSet<ViewIncomingCheck> ViewIncomingChecks { get; set; }
//...
}
теперь, когда я запускаю приложение, оно выдает исключение о том, что контекст БД был изменен и нуждается в переносе. Я даже пытался добавить миграцию (что, кажется, неправильный вариант) и когда я добавляю миграцию, он говорит, что объект ViewIncomingChecks уже есть в базе данных.
Как я могу использовать это представление в своем коде?
Мое текущее решение состоит в том, чтобы иметь другой контекст только для представлений. Таким образом, он не конфликтует с миграциями EF. Это лучший вариант или есть лучший способ справиться с этим.





Согласно тому, что я сделал в своем проекте:
Сначала добавьте public virtual DbSet<ViewIncomingCheck> ViewIncomingChecks
{ get; set; } к вашему DbConext
Теперь создайте миграцию под названием ViewDbSetAdded
Удалите весь код из методов Up и Down, и он будет выглядеть следующим образом:
Код миграции:
public partial class ViewDbSetAdded : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
update-database, и она запустит пустую миграцию.
На данный момент ядро EF не поддерживает представление, но вы можете работать с представлением, используя запросы, как в этом примере: stackoverflow.com/questions/36012616/…