【发布时间】:2016-10-05 13:14:27
【问题描述】:
我正在使用 EF6 从数据库生成模型。
public partial class FolderFiles
{
public int ID { get; set; }
public string FileName { get; set; }
public virtual Folders FolderID{ get; set; }
}
public partial class Folders
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public FoldersTreeDict()
{
this.FoldersTreeDict1 = new HashSet<FoldersTreeDict>();
this.FolderFiles = new HashSet<FolderFiles>();
}
public int ID { get; set; }
public string Name { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<FolderFiles> FolderFiles { get; set; }
}
在获取结果作为列表更新后,EF 加载所有日期 FolderFiles 其中 FolderID=是更新文件夹的 ID。这需要很长时间,而且我在这种情况下根本不需要它们
这里是更新:
var model = db.Folders;
if (ModelState.IsValid)
{
try
{
var modelItem = model.SingleOrDefault(x => x.ID == item.ID);
if (modelItem != null)
{
modelItem.Name = "Test";
db.SaveChanges();
}
}
catch (Exception e)
{
ViewData["EditError"] = e.Message;
}
}
var result = model.ToList();
我在此更新中遗漏了什么或做错了什么,因此加载了外国数据?
附言 在我使用其他语言的其他框架中,有两种加载外国数据的方法 1)在提货对象上(我认为它称为延迟加载) 2)当我们想从关联属性中获取数据时
【问题讨论】:
-
你试过
db.ContextOptions.LazyLoadingEnabled = false吗?您可能需要打开一个专门的上下文才能让这个函数禁用延迟加载。 -
Thx,而不是 EF6 中的 ContextOptions 是配置属性,所以 'db.Configuration.LazyLoadingEnabled = false' 对我有用)如果您发布答案,我会接受它作为解决方案
标签: c# entity-framework asp.net-mvc-5