2012-04-24 48 views
1

我使用EF 4.3.1代碼先忽略相關實體的財產

public class User 
{ 
    public int Id { get; set; } 
    public IList<UserFile> Files { get; set; } 
} 

隨着使用文件

public class UserFile 
{ 
    public int Id { get; set; } 
    public User User { get; set; } 
    public string Name { get; set; } 
    public byte[] Data { get; set; } 
} 

代碼

var users = Context.Users.Include(u => u.Files).ToList(); 

加載從實體用戶數據現在這個工作,但文件可能相當大。我想要做的是加載除了實際的Data屬性以外的所有內容,以便可以高效地顯示只有文件名的用戶列表。 有沒有一些乾淨的方法來解決這個問題?

我最好的想法至今推出了相關的1-1另一個實體FileUserFile並且只包含Data領域,隨着Name留在UserFile。我寧願不添加其他冗餘表(從DB POV)只是爲了讓加載用於EF容易...

回答

2

一種方法是創建一個UserBasicFile實體包含一切,但該數據,然後進行UserFile延長UserBasicFile ,幷包括Data屬性。這樣,如果您擁有僅需要基本信息的實用程序功能,則可能需要UserBasicFile s和UserFile仍然可以提供給這些功能。

請記住,您不一定必須擁有兩個表才能擁有兩個實體類型。

+0

看起來很有希望。派生實體是否會自動映射到同一個表中?或者我需要添加一些映射配置和/或DbContext屬性? – 2012-04-24 22:01:20

+0

我已經發現它自動工作。謝謝! – 2012-04-24 22:12:38