Два дня, потраченные на это до сих пор. Это сводит меня с ума.Бриз не включая связанные объекты
Некоторого связанный с кодовым первым рамочным объектом класс:
public class Schedule
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid RowId { get; set; }
public DateTime Start { get; set; }
public DateTime End { get; set; }
public virtual ICollection<Charge> Charges { get; set; }
}
public class Charge
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid RowId { get; set; }
public decimal ChargeableRate { get; set; }
public DevType DevType { get; set; }
public Schedule Schedule { get; set; }
}
public class DevType
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid RowId { get; set; }
public string Type { get; set; }
public virtual ICollection<Charge> Charge { get; set; }
}
Я прошу рамку сущности для графика, как это:
_schedule Schedule = _myContext.Schedules
.Include("Charges.DevType")
.Where(cs => cs.Start < dateWindow && cs.End > dateWindow)
.First();
И я вернусь все, что нужно. Когда сериализован для Json для веб-службы, все выглядит отлично и денди, и все данные, как указано выше.
Однако, как только он передается Бризу, я теряю объекты DevType в нижней части стека. Они не нулевые или пустые, они просто НЕ ТАМ.
Приостановка в браузере и сверление в metadataStore._entityResourceMap вы можете найти зарегистрированный DevType, поэтому Бриз четко знает, что он существует как часть модели. Он просто не может видеть отношения между Charge и DevType, поэтому игнорирует его.
Я пробовал все виды вещей - регистрации отношения в явной форме EF (странно приводит к добавленным пустым столбцам в базе данных), используя команду .expand в Breeze, чтобы заставить его нагрузку:
function getCurrentChargingSchedule() {
var query = breeze.EntityQuery.from('GetCurrentSchedule').expand('Charge.DevType');
return manager.executeQuery(query);
};
Ничего из этого не имеет значения.
Ближайший я получил удалял виртуальную ICollection заряда от DEVTYPE и вместо маркировки его:
[Key, ForeignKey("Charge"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
Это не кажется правильным - есть много, чтобы одна связь, поэтому я не следует удалять ICollection. И неудивительно, что запросы к EF с этим на месте всегда возвращались. Задавайте объекты с DevType: null. Но по этому сценарию Бриз действительно забирал DevTypes - это просто, что они, очевидно, были нулевыми.
Я нахожусь на грани разрыва Бриз здесь и полагаюсь непосредственно на мой веб-сервис для передачи данных. Может кто угодно, пожалуйста, помогите?