Как привязать объекты в MVC?
Добрый день всем,
Мне было поручено изучить MVC с помощью онлайн-учебников и внедрить эти знания в новое веб-приложение. Так что я немного зеленый, когда дело доходит до MVC.
Одна проблема, которую я до сих пор не решил, заключается в том, как связывать объекты при использовании Entity Framework. Классы с базовыми типами данных извлекаются без проблем, но теперь я создал класс "Survey", который включает в себя свойство класса "Outcome". "Результат" - это справочная таблица, содержащая столбцы идентификаторов и описаний, которая успешно заполняется. В базе данных EF создал внешний ключ с именем "Outcome_ID". Но когда уровень доступа к данным(который наследует DbContext) компилирует DBSet (of Survey), поле результата остается нулевым, несмотря на то, что все они имеют действительные внешние ключи в базе данных.
Класса. :
Imports System.ComponentModel.DataAnnotations Public Class Survey <Key> <Schema.DatabaseGenerated(Schema.DatabaseGeneratedOption.Identity)> Public Property ID As Integer Public Property Created As DateTime Public Property LastModified As DateTime Public Property Owner As String Public Property Outcome As Outcome Public Property SurveyCountry As Integer End Class
Уровень Доступа К Данным:
Imports System.Data.Entity Public Class DAL Inherits DbContext Public Property Users As DbSet(Of User) Public Property Surveys As DbSet(Of Survey) Public Property Outcomes As DbSet(Of Outcome) Protected Overrides Sub OnModelCreating(modelBuilder As DbModelBuilder) modelBuilder.Entity(Of User).ToTable("User") modelBuilder.Entity(Of Survey).ToTable("Survey") modelBuilder.Entity(Of Outcome).ToTable("Outcomes") MyBase.OnModelCreating(modelBuilder) End Sub End Class
Функция класса репозитория (возвращает список опросов, каждый из которых имеет нулевой "результат"):
Public Function GetSurveyList() As List(Of Survey) If IsNothing(data) Then data = New DAL() Return data.Surveys.ToList() End Function
Я убежден, что мне нужно добавить какую-то форму привязки к полю, или инициализацию, или что-то еще. Что я упускаю? Заранее спасибо за вашу помощь!
Что я уже пробовал:
Посмотрел это в интернете, но не смог найти решения.
Richard Deeming
Попробуйте включить свойство навигации:
Return data.Surveys.Include(Function (s) s.Outcome).ToList()
Entity Framework Загрузка Связанных Сущностей[^]
mgoad99
Мне неясно, есть ли у вас вопрос MVC или вопрос EF. В любом случае, я думаю, что ваш подход может быть ошибочным.
Я рекомендую серию учебных пособий по MVC от Microsoft. Для меня наличие примера-отличный способ понять, как заставить что-то работать.
Это ссылка на конкретный учебник, но на этом сайте есть еще много других.
https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/database-first-development/
Возможно, просмотр учебника поможет вам указать правильное направление.