Я пытаюсь получить отдельные строки сведений, не создавая объект для родителя. У меня есть карта, которая соединяет родительскую таблицу с деталями для достижения этой цели:
Table("UdfTemplate");
Id(x => x.Id, "Template_Id");
Map(x => x.FieldCode, "Field_Code");
Map(x => x.ClientId, "Client_Id");
Join("UdfFields", join =>
{
join.KeyColumn("Template_Id");
join.Map(x => x.Name, "COLUMN_NAME");
join.Map(x => x.Label, "DISPLAY_NAME");
join.Map(x => x.IsRequired, "MANDATORY_FLAG")
.CustomType<YesNoType>();
join.Map(x => x.MaxLength, "DATA_LENGTH");
join.Map(x => x.Scale, "DATA_SCALE");
join.Map(x => x.Precision, "DATA_PRECISION");
join.Map(x => x.MinValue, "MIN_VALUE");
join.Map(x => x.MaxValue, "MAX_VALUE");
});
Когда я запускаю запрос в NH, используя:
Session.CreateCriteria(typeof(UserDefinedField))
.Add(Restrictions.Eq("FieldCode", code)).List<UserDefinedField>();
Я возвращаю первый ряд три раза, в отличие от трех отдельных рядов, которые он должен вернуть. Если посмотреть на трассировку SQL в NH Profiler, запрос кажется правильным. Проблема в том, что проблема в сопоставлении, но я не уверен, как устранить неполадки в этом процессе. Я собираюсь включить ведение журнала, чтобы увидеть, что я могу найти, но я подумал, что опубликую здесь, если кто-то, имеющий опыт присоединения карт, знает, где я иду неправильно.