У меня есть SQL View в моей БД под названием 'dbo.Viewtest'. Это представление объединяет данные двух других таблиц с одинаковыми типами столбцов. Представление также добавляет столбец, чтобы показать, из какой таблицы получены данные.
Так выглядит представление SQL в SQL Обозревателе объектов сервера:
dbo.ViewTest
Id | Тип | Содержание | Расположение
1 | h1 | Добро пожаловать! | Главная
2 | р | Войти | Главная
3 | h2 | руководство | Главная
1 | h1 | информация | События
2 | р | следовать | События
Это представление создается из 2 таблиц, одна из которых называется «HomeContent», а другая «EventsContent» (отсюда и столбец местоположения). Представление было создано с использованием следующего кода:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql("CREATE VIEW ViewTest AS " +
"SELECT Id, Type, Content, 'Home' location FROM HomeContent UNION ALL " +
"SELECT Id, Type, Content, 'Evenementen' FROM EvenementenContent");
}
Затем я добавил класс модели следующим образом:
[Table("ViewTest")]
public class TestViewContent
{
[Key]
public int Id { get; set; }
public string Type { get; set; }
public string Content { get; set; }
public string Location { get; set; }
}
И, наконец, я добавил его в свой DbContext:
public DbSet<TestViewContent> TestViewContent { get; set; }
Теперь вот, где все начинает ломаться. Когда я пытаюсь отобразить это SQL представление, используя EF Core, я получаю следующий неправильный вывод:
Id | Тип | Содержание | Местоположение
1 | h1 | Добро пожаловать! | Главная
2 | р | Войти | Главная
3 | h2 | руководство | Главная
1 | h1 | Добро пожаловать Главная
2 | р | войти | Home
Как вы можете видеть, по любой причине, когда я пытаюсь отобразить SQL View, данные «зацикливаются», когда данные из таблицы «Events» должны отображаться. Так что по какой-то причине он отображает только данные из домашней таблицы.
Код, который я использую для отображения SQL View:
private readonly DbApplicationContext_context;
public TestViewContentController(DbApplicationContext_context)
{
_context = context;
}
public async Task<IActionResult> Index()
{
return View(await _context.TestViewContent.ToListAsync());
}
Кто-нибудь может мне здесь помочь? В случае, если невозможно отобразить SQL -обзоры, кто-нибудь знает лучший способ объединить несколько таблиц и добавить столбец «Расположение», чтобы проследить таблицу, откуда берутся данные? Любая помощь будет принята с благодарностью!