兩天爲止。這讓我瘋狂。微風不包括涉及實體在此度過
某些鏈接的代碼第一個實體框架類:
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();
我找回我需要的一切。當爲一個Web服務序列化爲Json時,它看起來都很好,並且所有數據都是重複的。
只要它傳遞給微風,但是,我在堆棧底部失去了DEVTYPE對象。他們不是空的,或者是空的,他們根本就不在那裏。
暫停在瀏覽器中鑽入metadataStore._entityResourceMap你可以找到DEVTYPE註冊,所以微風明確知道它的存在作爲模型的一部分。它似乎無法看到Charge和DevType之間的關係,所以忽略它。
我已經試過各種東西 - 註冊在EF(奇怪導致加空列在數據庫中)的關係明確地,在微風使用.expand命令將其強制加載:
function getCurrentChargingSchedule() {
var query = breeze.EntityQuery.from('GetCurrentSchedule').expand('Charge.DevType');
return manager.executeQuery(query);
};
沒有任何區別。
我有被去除DEVTYPE充電的虛擬ICollection的,而是有其標記最接近:
[Key, ForeignKey("Charge"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
這似乎並不正確 - 這裏有一個多對一的關係,所以我不應該刪除ICollection。不出所料,對EF的查詢總是返回Charge對象與DevType:null。但在這種情況下,Breeze確實拿起了DevTypes--顯然它們是空的。
我在這裏撕毀微風和直接進行數據傳輸我的web服務依託的邊緣。任何人都可以請,請幫忙?