使用导航属性来“添加”相关项目的速度慢吗?

时间:2014-03-10 17:14:26

标签: c# entity-framework navigational-properties

我有一个Device,其中包含其他DeviceLogEntry的列表。 device.Logs是一个导航属性,我目前正在添加新的日志

device.Logs.Add(newEntry);     

日志定义如此

public virtual ICollection<DeviceLogEntry> Logs { get; set; }

我的问题是,这会在添加新表之前加载整个Logs表吗?如果是这样(由于Logs包含大量条目,这将非常慢)。什么是更好(更快)的替代方案?

1 个答案:

答案 0 :(得分:1)

看起来这是他们现在没有解决的问题:http://entityframework.codeplex.com/workitem/683

你可以尝试一些事情。

  1. 通过删除虚拟
  2. 禁用实体的延迟加载
  3. 如果适用,请另外添加
  4. 对于第2点,将在您的日志表中公开DeviceId,而不是执行:

    device.Logs.Add(newEntry);  
    

    会做类似的事情:

    newEntry.DeviceId = _deviceId;
    context.Logs.Add(newEntry);