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?删除这个属性会改变什么? –