Не могли бы вы привести мне какой-либо пример набора результатов запроса и сопоставления из объединенных таблиц? У меня есть следующий код:Любой пример использования соединения в запросе применим для 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, будет полезна.
UPDATE
Для моего первого случая я получаю следующий 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»)]
Не работает. Все объекты имеют значения свойств по умолчанию. NPoco просто не может сопоставлять имена столбцов свойствам, так как использует оператор SQL AS для переименования столбца при сопоставлении. Хотя я могу написать соответствующий SELECT вручную, он будет слишком сложным и неприемлемым. – shameleo
Просто curiuos: вы задали вопрос о npoco, внося свой вклад в петапоко. Может ли петапоко справиться с этим? Я думаю о запросе на функцию (или, возможно, запрос на растяжение). См. Обновленный вопрос. Я знаю, что у моих таблиц есть необычные имена столбцов, но я не могу это изменить и мне нужно это сделать. – shameleo
Ну, похоже, petapoco может делать правильное отображение с помощью SELECT *. Но использование * означает накладные расходы, не так ли? Мне не нужны все эти столбцы ... – shameleo