Я пытаюсь правильно спроектировать структуру метода контроллера Api со следующим объектом в качестве возвращаемого типа:
var obj= new CustomObject
{
Id = a.Id,
stampleProperty= a.stampleProperty,
stampleProperty= a.stampleProperty2,
B= a.B,
};
Базовый сценарий состоит из двух объектов A и B, которые имеют «Многодля многих », как описано ниже:
![enter image description here](https://i.stack.imgur.com/9CKJq.png)
public class A
{
public int AId { get; set; }
public string sampleProperty{ get; set; }
public string sampleProperty2{ get; set; }
public virtual ICollection B { get; set; }
}
public class B
{
public int BId { get; set; }
public string sampleProperty3{ get; set; }
public string sampleProperty4{ get; set; }
public int ComyId { get; set; }
public virtual ICollection A{ get; set; }
public virtual Comy Comy{ get; set; }
}
Примечание: Я не могу изменить структуру базы данных.Кроме того, я ищу наилучший из возможных способов получения реляционных объектов B из объекта A, без виртуальных свойств B для A.
Код, который я пробовал на контроллере, хотя он использует подход "LazyLoading", возвращаетвстроенные объекты типа A в каждом связанном объекте типа B.
var a = db.A.FirstOrDefault(a => a.stampleProperty== stampleProperty);
var obj= new CustomObject
{
Id = a.AId,
sampleProperty= a.sampleProperty,
sampleProp= a.sampleProp,
B = a.B,
};
Возврат:
{
"AId":
"sampleProperty":
"sampleProp":
"B":[{
"BId":
"sampleProperty3":
"sampleProperty4":
"ComyId":
"A":[ **REFERENCE LOOP** ]
"ComyId":
"Comy":{}
}]
}
Цель: B объектов без виртуальных свойств A.
В связи с тем, что я нахожусь в процессе изучения этой инфраструктуры, я ищу правильный подход к использованию этих инструментов, избегая необработанных запросов SQL и множественных запросов.