Как сделать запрос к базе данных SQL, используя C# на основе совпадения внешнего ключа - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть следующие классы сущностей для моей базы данных:

[Table("Results")]
    public class ResultsEntity
    {
        [Key]
        public Guid Id { get; set; }
        public Guid ComponentId { get; set; }
        [ForeignKey("ComponentId")]
        public ComponentEntity Component { get; set; }
        public Status Status { get; set; }
        public decimal Value { get; set; }
        public string Units { get; set; }
        public DateTime CreatedAt { get; set; }
    }

[Table("Components")]
    public class ComponentEntity
    {
        [Key]
        public Guid Id { get; set; }
        public string Title { get; set; }
        public string IconCode { get; set; }
    }

Я хочу запросить мою таблицу результатов и получить информацию о результате плюс заголовок ComponentEntity (из таблицы Components). Они связаны через внешний ключ ComponentId Guid. Это мой первый запрос к базе данных SQL с C#, и я пытаюсь найти правильный синтаксис. Пока что моя попытка заключается в следующем:

IQueryable<ResultsEntity> resultQuery =
                from results in _dbContext.Results
                select results;


            foreach (ResultsEntity result in resultQuery)
            {
                var resultData = new ResultData
                {
                    Id = result.Id,
                    Status = result.Status,
                    Primary = result.Value,
                    Units = result.Units,
                    // How can I get the title of the component here? 
                };
            }
        }

Может ли кто-нибудь указать мне правильное направление, пожалуйста? Спасибо

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Попробуйте

_dbContext.Results.Include(e => e.Component).Select(item =>
        new ResultData
            {
                Id = item.Id,
                Status = item.Status,
                Primary = item.Value,
                Units = item.Units,
                Title = item.Component.Title
            };);

Вы добавляете сюда Компонент, чтобы заполнить его значениями из БД. После этого вы можете использовать поле Component в ResultsEntity для получения необходимых значений.

1 голос
/ 07 апреля 2020

Вы можете присоединиться к нему, используя следующий запрос linq

from results in _dbContext.Results
            .Include(r => r.ComponentEntity)
        select results;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...