#c# #asp.net #.net #entity-framework #entity-framework-core
Вопрос:
У меня есть два класса сущностей под названием Проект и организация. Они имеют отношение «один ко многим» и отображаются как:
public class Project
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Organization> Organizations { get; set; }
//..other attributes ....
}
public class Organization
{
public int Id { get; set; }
public int ProjectId { get; set; }
public Project Project { get; set; }
}
И в создании моделей:
builder.Entity<Organization>()
.HasOne(x => x.Project)
.WithMany(x => x.Organizations)
.HasForeignKey(x => x.ProjectId);
Теперь я создал проект как не отображенную сущность, которая в основном такая же, как проект, но с меньшим количеством атрибутов. Это то, что я добавил в OnModelCreating:
builder.Entity<ProjectDto>()
.ToSqlQuery("[some query as a string]")
.ToTable("ProjectDto", t => t.ExcludeFromMigrations());
Я не хочу, чтобы эта сущность создавалась при миграции. Что я хочу сделать сейчас, так это запросить этот проект. Я могу сделать это, если я запрашиваю только для ProjectDto, но не для организации.
Как мне «подключить» этот проект к сущности Организации, чтобы я мог включить Организации в свой запрос?
мой код запроса, который работает и возвращает проект в обычном режиме:
return await _context.ProjectDto.ToListAsync();
мой запрос, который возвращает ошибку
return await _context.ProjectDto.Include(x => x.Organizations).ToListAsync();
я получил сообщение об ошибке «Недопустимое имя столбца «ProjectDtoId»».
Я пробовал другие вещи, такие как добавление атрибутов ProjectDtoId и ProjectDto в класс организации и сопоставление их с методом OnModelCreating, но я все равно получаю ту же ошибку.