EF 6.1.3外键关联

时间:2016-10-05 13:14:28

标签: c# entity-framework asp.net-mvc-5

我使用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();

我在此更新中遗漏或做错了什么,因此加载了外国数据?

P.S 在我使用其他语言的其他框架中,有两种方法可以加载外部数据 1)在提货对象上(我认为它称为延迟加载) 2)当我们想从关联属性中获取数据时

1 个答案:

答案 0 :(得分:2)

您可以使用

db.Configuration.LazyLoadingEnabled = false

将以下所有选项设置为加载任何引用的对象。您可能需要手动加载它们。