У меня есть 1 таблица и 2 представления (PeopleView и ProjectView) в моей БД.Таблица карт и представления с Entity Framework CodeFirst
Таблица с названием Часы, имеет столбцы, которые являются «ссылками» на представления.
[Id] [int] IDENTITY(1,1) NOT NULL,
[Date] [date] NOT NULL,
[PeopleId] [int] NOT NULL, // Reference to PeopleView
[ProjectId] [nvarchar](max) NOT NULL, // Reference to PrijectView
[Hour] [int] NOT NULL,
I красный, что невозможно создать винт с изображением. Поэтому мой вопрос заключается в том, как создать сопоставление для этой ситуации в EntityFramework.
Когда я получаю несколько часов объект из БД Я хочу получить доступ к проекту объекта так:
hour.project.name
hour.project.id
Это возможно?
час Entity:
public class Hour : Entity<int>
{
[Column(TypeName = "date")]
[Required]
public virtual DateTime Date { get; set; }
public virtual PeopleView People { get; set; }
[Required]
public virtual int? PeopleId { get; set; }
public virtual ProjectView Project { get; set; } // How to access project object from hour object when Project is a View in DB ?
[Required]
public virtual string ProjectId { get; set; }
[Required]
[Column("Hour")]
public virtual int Hours { get; set; }
}
ProjectView лицо:
[Table("ProjectView")]
public partial class ProjectView : Entity<string>
{
[Key]
[Column(Order = 0)]
[StringLength(50)]
public override string Id { get; set; }
[StringLength(255)]
public string Name { get; set; }
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Offer { get; set; }
}
После этого обязательно создать новую миграцию? Когда я добавил это и попытаюсь получить доступ к свойству, я получил эту ошибку: {«Экземпляр ObjectContext был удален и больше не может использоваться для операций, требующих подключения».} –
Нет, вам не нужно создавать миграцию поскольку представления уже существуют в вашей базе данных. Что касается ошибки, возможно ли, что вы удаляете свой DbContext перед доступом к свойству навигации? Это обычная проблема при использовании ленивой загрузки, особенно с MVC - вы можете утилизировать DbContext в своем контроллере, но пытаетесь получить доступ к свойству в своем представлении. – Peter
Хорошо спасибо, все, что я делаю в контроллере. У меня нет этой проблемы, когда я использую обычные таблицы БД ... –