【问题标题】:EF 6.1.3 Foreign key assosiationEF 6.1.3 外键关联
【发布时间】: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


【解决方案1】:

你可以使用

db.Configuration.LazyLoadingEnabled = false

将所有后续选择设置为加载任何引用的对象。您可能必须手动加载它们。

【讨论】:

  • Thx,但我知道这一点,在我的情况下需要强制不包含 FolderFiles)
  • 对不起,我把你的问题弄错了,将删除我的答案。
  • 更新了答案以反映上述讨论。
猜你喜欢
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 2020-12-10
  • 1970-01-01
相关资源
最近更新 更多