NPoco: объединение двух таблицC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 NPoco: объединение двух таблиц

Сообщение Anonymous »

Я использую платформу NPoco (и Umbraco) и получаю с ее помощью много данных из отдельных таблиц. Теперь я хочу объединить таблицы вместе, но кажется, что это вообще не работает.
Две таблицы выглядят следующим образом: Game является основной таблицей, а SpecialConfig — тем, к чему я присоединяюсь. У него есть связь ForeignKeyRelationship

Код: Выделить всё

using NPoco;
using Umbraco.Cms.Infrastructure.Persistence.DatabaseAnnotations;

namespace Models.Dto;

[TableName("Game")]
[PrimaryKey("GameId", AutoIncrement = true)]
public class GameWithSpecialDto {
[Column("GameId")]
public int GameId { get; init; }

[Column("IsFinished")]
public bool IsFinished { get; init; }

// a couple of another elements

[Column("SpecialsId")]
[ForeignKey(typeof(SpecialConfigDto), Name = "FK__Game__SpecialsId__0E04126B")]
public required SpecialConfigDto SpecialsId { get; init; }
}

[TableName("SpecialConfig")]
[PrimaryKey("SpecialsId", AutoIncrement = true)]
public class SpecialConfigDto {
[Column("SpecialsId")]
public int SpecialsId { get; init; }

[Column("SpecialsName")]
public string? SpecialsName { get; init; }
}
Код для него следующий:

Код: Выделить всё

using Models.Dto;
using Serilog;
using Umbraco.Cms.Infrastructure.Scoping;

namespace Core.Repositories;

public class GameRepository {
private readonly IScopeProvider _scopeProvider;

public GameRepository(IScopeProvider scopeProvider) {
_scopeProvider = scopeProvider;
}

public GameWithSpecialDto? GetGame(int gameId) {
try {
using var scope = _scopeProvider.CreateScope();
var game = scope.Database.Query().Include(game=>game.Specials).Where(game=>game.GameId==gameId);
//var game = scope.Database.Query().Include(game=>game.SpecialsId).Where(game=>game.GameId==gameId).FirstOrDefault();
// ORIGINAL line
//var game = scope.Database.Query().Where(game=>game.GameId==gameId).FirstOrDefault();
scope.Complete();

return game.FirstOrDefault();
} catch (Exception ex) {
Log.Error("Error fetching game from database "+ex);
return null;
}
}
}
Исходная строка не содержит каких-либо объединений (GameDTO то же самое, но без внешнего ключа), но теперь я хочу присоединиться к ней. После небольшого исследования он пришел к выводу, что мне следует использую команду Include, но там получаю различные сообщения об ошибках о неправильном приведении элементов.
Может быть, мне вообще не нужно включать и все должно работать автоматически благодаря аннотациям ForeignKey?

Подробнее здесь: https://stackoverflow.com/questions/784 ... two-tables
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Предотвращает ли NPOCO Append (ARG1, ARG2) инъекция SQL?
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Объединение двух таблиц в объектах запроса возврата FastAPI sqlalchemy/
    Гость » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Гость
  • Объединение двух таблиц в объектах запроса возврата FastAPI sqlalchemy/
    Anonymous » » в форуме Python
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Джанго – объединение двух таблиц без внешнего ключа
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Объединение данных из двух таблиц базы данных по связанному столбцу.
    Anonymous » » в форуме Php
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»