У меня есть представление в моей базе данных:
< pre class="lang-sql Prettyprint-override">
Код: Выделить всё
CREATE VIEW VW_TESTVIEW AS
SELECT 'THIS IS A TEST' AS EXAMPLE
FROM DUAL;

В моем приложении .NET 8 я добавил этот класс:
Код: Выделить всё
public class VW_TestView
{
public string Example { get; set; }
}
Код: Выделить всё
modelBuilder
.Entity(x =>
{
x.HasNoKey();
x.ToView("VW_TESTVIEW");
});
Когда я запускаю Add-Migration exampleView, результирующий метод Migration.Up имеет следующий CreateTable:
Код: Выделить всё
migrationBuilder.CreateTable(
name: "VW_TESTVIEW",
columns: table => new
{
EXAMPLE = table.Column(type: "NVARCHAR2(2000)", nullable: false)
},
constraints: table =>
{
});
Если я игнорирую объект из модели, я по-прежнему не могу использовать TestViews DbSet, поскольку он возвращает эту ошибку: System.InvalidOperationException: 'Невозможно создать DbSet для 'VW_TestView', поскольку этот тип не включен в модель для контекста.'
- Как правильно создать класс, представляющий представление базы данных с помощью EF Core?
- Почему ToView делать то, что он говорит, что должен делать? («Настраивает представление, которому соответствует тип сущности при выборе реляционной базы данных.»)
Подробнее здесь: https://stackoverflow.com/questions/791 ... -migration