Любой пример использования соединения в запросе, применимом для 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);