0
我使用EF6開發Web應用程序。實體框架虛擬導航屬性
說我有以下型號:
public interface IBaseEntityObject
{
public int Id {get; set;}
}
public abstract class BaseEntityObject : IBaseEntityObject
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id {get; set;}
}
public class Folder : BaseEntityObject
{
public string Name {get; set;}
public List<Letter> Letters {get; set;}
}
public abstract class Letter : BaseEntityObject
{
public string Title {get; set;}
public string Content {get; set;}
public virtual Folder Folder {get; set;}
public int FolderId {get; set;}
public DateTime CreationDate {get; set;}
}
public class OutgoingLetter : Letter
{
// .. OutgoingLetter properties
}
public class ReceviedLetter : Letter
{
// .. ReceviedLetter properties
}
public class MyDbContext : DbContext
{
public DbSet<Folder> Folders {get; set;}
public DbSet<Letter> Letters {get; set;}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// Folder <-> Letters
modelBuilder.Entity<Letter>()
.HasRequired(t => t.Folder)
.WithMany(f => f.Letters)
.HasForeignKey(t => t.FolderId)
.WillCascadeOnDelete(true);
}
}
是否有任何的損失,如果我從信件模式刪除虛擬文件夾導航屬性?我不希望我的客戶在收到一封信時收到一個文件夾..看起來不對。
我只是想知道如果通過刪除這個屬性,我會失去一些EF性能。
謝謝。
從我的理解,這意味着創建另一個對象,將持有我想發送到客戶端的數據 - 意味着我會創建另一個LetterForClients,它只能舉行例如Title和FolderId? 而不管,是否有任何理由保持虛擬文件夾的導航屬性? –
如果不使用虛擬,則在調用此屬性時,EF將無法在LazyLoading中填充此屬性。 – MadOX
如果我設置EnableLazyLoading = false?刪除這個屬性會改變什麼? –