2011-04-13 60 views
0

這裏是一個interresting問題,我們有2類(注意,這些都是無稽之談澄清我的問題)現在,在EF 4.1使用代碼首先EF 4.1代碼第一個SQL CE外鍵沒有導航性能

class Foo 
{ 
    public int Id { get; set; } 
} 

class Bar 
{ 
    public int Id { get; set;} 
    public int FooId { get;set;} 
} 

,我想要以下內容:Foo有0個或更多帶級聯刪除的酒吧。這很容易通過在模型中創建實際屬性來實現(Bar在foo中的集合),但這些模型也是DTO的,因此不能對它們進行額外的屬性(例如,如果您想爲給定的Foo使用所有的Bar,則需要在特定查詢中詢問服務)。

有什麼辦法可以做到這一點?目前我有一個Foo和Bar專用於EF的副本,其中我的存儲庫在副本和實際DTO之間進行轉換。

我希望有更好的方法,如果是的話,請教我。

謝謝!

回答

0

作爲described here如果您想使用代碼優先方法創建FK實數,您總是需要至少一方的導航屬性。如果您的課程是DTO,您可以用序列化屬性標記它。例如,使用WCF與DataContractSerializer時,你可以使用:

public class Bar 
{ 
    public int Id { get; set; } 
    public int FooId { get; set; } 
    [IgnoreDataMember] 
    public Foo Foo { get; set; } 
} 

如果您正在使用實體DTO應該採用額外的屬性沒有問題。