【问题标题】:Sequence contains no elements : self referencing code first序列不包含元素:首先是自引用代码
【发布时间】:2013-04-07 08:06:18
【问题描述】:

当我尝试对下一个实体进行自引用时

public class Folder
{
    public int Id { get; set; }
    public int?  ParentFolderId { get; set; } // Added property
    public string Name { get; set; }


    public virtual ICollection<Folder> Childrens { get; set; } // Added property
    public virtual ICollection<ArticleTitle> ArticleTitles { get; set; }

}


public class ArticleTitle
{
    public int Id { get; set; }
    public string Title { get; set; }
    public int? FolderId { get; set; }
    public virtual Folder Folder { get; set; }
    public virtual Article Article { get; set; }
}

我添加了一些属性(注释为“添加的属性”)和这行代码:

  modelBuilder.Entity<Folder>()
 .HasMany(s => s.Childrens)
 .WithOptional()
 .HasForeignKey(s => s.ParentFolderId);

得到这个异常:

序列不包含任何元素

自引用不正确吗?

【问题讨论】:

  • 你在哪里得到错误
  • 初始化数据库时(DropCreateIfModelChanges) Context context = new Context(); context.Database.Initialize(true);
  • 尝试添加public virtual Folder ParentFolder { get; set; },然后在ParentFolderId上方设置外键属性,如下所示:[ForeignKey("ParentFolder")]
  • 我添加了您的代码并删除了流利的 api 绑定和 Childrens 属性,而不是所有工作。谢谢。
  • 请作为答案。

标签: entity-framework code-first


【解决方案1】:

你的代码应该是这样的:

public class Folder
{
    public int Id { get; set; }
    [ForeignKey("ParentFolder")]
    public int?  ParentFolderId { get; set; }
    public virtual Folder ParentFolder { get; set; }
    public string Name { get; set; }


    public virtual ICollection<Folder> Childrens { get; set; }
    public virtual ICollection<ArticleTitle> ArticleTitles { get; set; }

}
...

很高兴它有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    相关资源
    最近更新 更多