Любой пример использования соединения в запросе, применимом для npoco

Не могли бы вы привести какой-либо пример запроса и сопоставления набора результатов из объединенных таблиц? У меня есть следующий код:

DTO:

public class FormCatalogRecord
{
    [Column("MFormId")]
    public int Id { get; set; }

    [Column("SGroupId")]
    public int? GroupId { get; set; }

    [Column("SGroupName")]
    public string GroupName { get; set; }

    [Column("STypeFormId")]
    public int TypeId { get; set; }

    [Column("MFormKod")]
    public string Code { get; set; }

    [Column("MFormName")]
    public string Name { get; set; }

    [Column("SFormPeriodName")]
    public string Period { get; set; }

    [Column("MFormDateStart")]
    public DateTime? DateStarts { get; set; }

    [Column("MFormDateEnd")]
    public DateTime? DateEnds { get; set; }

    [Column("MFormPublish")]
    public DateTime? PublishDate { get; set; }
}

Запрос:

string formsQueryStr =
                    "FROM MForm " +
                    "INNER JOIN SFormPeriod ON MForm.SFormPeriodId = SFormPeriod.SFormPeriodId " +
                    "INNER JOIN SGroup ON MForm.SGroupId = SGroup.SGroupId " +
                    "ORDER BY MForm.SGroupId";

var test = db.Fetch<FormCatalogRecord>(formsQueryStr);

Результатом является исключение: "Неоднозначное имя столбца 'SGroupId'". Я пытался изменить атрибут:

[Column("MForm.SGroupId")]
public int? GroupId { get; set; }

Теперь я получаю исключение

Неверное имя столбца 'MForm.SGroupId'

Удивительно, но я не нашел примеров в официальной документации. Любая помощь, действительная для npoco, будет полезна.

ОБНОВИТЬ

Для моего первого случая я получаю следующий SQL:

SELECT 
    [MFormId] AS [Id], [SGroupId] AS [GroupId],
    [SGroupName] AS [GroupName], [STypeFormId] AS [TypeId], 
    [MFormKod] AS [Code], [MFormName] AS [Name], 
    [SFormPeriodName] AS [Period], [MFormDateStart] AS [DateStarts], 
    [MFormDateEnd] AS [DateEnds], [MFormPublish] AS [PublishDate] 
FROM 
    MForm 
INNER JOIN 
    SFormPeriod ON MForm.SFormPeriodId = SFormPeriod.SFormPeriodId 
INNER JOIN 
    SGroup ON MForm.SGroupId = SGroup.SGroupId 
ORDER BY 
    MForm.SGroupId

Я думаю, мне нужен какой-то способ добавить "MForm". до "[SGroupId] AS [GroupId]". Было бы неплохо, если бы атрибут столбца мог поддерживать такой синтаксис, как [Column("TableName.ColumnName")]

1 ответ

NPooc и PetaPoco - разные проекты, и сейчас трудно связать друг с другом другие.

Что касается вашего вопроса. Ты пытался

string formsQueryStr = 
                    "SELECT MForm.*" +
                    "FROM MForm " +
                    "INNER JOIN SFormPeriod ON MForm.SFormPeriodId = SFormPeriod.SFormPeriodId " +
                    "INNER JOIN SGroup ON MForm.SGroupId = SGroup.SGroupId " +
                    "ORDER BY MForm.SGroupId";

var test = db.Fetch<FormCatalogRecord>(formsQueryStr);
Другие вопросы по тегам