2013-07-22 55 views
1

兩天爲止。這讓我瘋狂。微風不包括涉及實體在此度過

某些鏈接的代碼第一個實體框架類:

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服務依託的邊緣。任何人都可以請,請幫忙?

回答

0

你試過加載與展開收費?

function getCurrentChargingSchedule() { 
    var query = breeze.EntityQuery.from('GetCurrentSchedule').expand('Charges, Charges.DevType'); 
    return manager.executeQuery(query).fail(queryFailed); 
}; 

function queryFailed (error) { 
    console.log(error.message); 
} 

您的導航屬性附表>的費用,所以你應該用全名加載它們(收費)