Поиск и обновление перекрестных ссылок в .Net Core 2.1 - PullRequest
0 голосов
/ 09 октября 2018

В настоящее время я пытаюсь найти и обновить таблицу перекрестных ссылок, в которой есть дополнительный столбец «рейтинга», например: |que_guid (Guid) |tag_guid (Guid) |рейтинг (длинный) |Цель состоит в том, чтобы создать FAQ, поэтому цель этой таблицы - связать вопросы и теги вместе, сохраняя при этом оценку релевантности в виде рейтинговых баллов, хранящихся в длинном целом.

Класс Вопрос:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;


namespace FirstFaqTest.Models {
    public class Questions {
        public string que_guid { get; set; }

        public string que_ten_code { get; set; }
        public string que_question {get; set; }
    }
}

Класс Tag:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;


namespace FirstFaqTest.Models {
    public class Tags {
        public string tag_ten_code { get; set; }
        public string tag_guid { get; set; }
        public string tag_name { get; set; }
    }
}

Класс TagQuestion:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace FirstFaqTest.Models
{
    public class TagQuestions
    {
        public string tqu_tag_guid { get; set; }
        public string tqu_que_guid { get; set; }
        public long tqu_pertinence { get; set; } //ranking
    }
}

Моя проблема в том, что я понятия не имею, как обновить столбец рейтинга.

Я уже сделал это, чтобы PK был составным с использованием modelBuilder в моем классе Context, например так:

protected override void OnModelCreating(ModelBuilder modelBuilder) {
    modelBuilder.Entity<Questions>()
                .HasKey(que => que.que_guid);
    modelBuilder.Entity<Tags>()
                .HasKey(tag => tag.tag_guid);
    modelBuilder.Entity<TagQuestions>()
                .HasKey(tqu => new { tqu.tqu_que_guid, tqu.tqu_tag_guid } );
}

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

В конце концов, это было быстрое, простое исправление ... Использование 2 предложений Where () помогло:

var tagQu = ctx.TagQuestions
               .Where(c => c.tqu_que_guid.Equals(tqu_que_guid))
               .Where(c => c.tqu_tag_guid.Equals(tqu_tag_guid))
               .FirstOrDefault();

Это может работать с FirstOrDefault (), потому что я работаю с GUID иЯ сделал оба этих столбца составным первичным ключом:

modelBuilder.Entity<TagQuestions>()
            .HasKey(tqu => new { tqu.tqu_que_guid, tqu.tqu_tag_guid });
0 голосов
/ 09 октября 2018

Поместите сложную бизнес-логику базы данных в процедуру хранилища, а затем предоставьте необходимые переменные для облегчения операции для потребителя.Затем в EF вызовите хранимую процедуру по мере необходимости.

Обратите внимание, что в .Net Core 2 отсутствует структура для вызова хранимой процедуры, и для выполнения вызова необходимо было использовать вызов ADO.Net.Мне неясно, если это та же самая ситуация;независимо от того, что вы сможете сделать звонок из EF или из ado.net с учетными данными EF по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...