实体框架核心中的外键NullReferenceExcepetion - c#

我是Entity Framework的新手,所以我不知道自己做得对还是这是新的Entity Framework Core中的错误。我需要为相关页面做一个类,例如1个页面与另一个页面相关。我上课Page

public class Page 
{
    public int ID { get; set; }
    public string UrlName { get; set; }
    [Required]
    public string Title { get; set; }
    [Required]
    public string Description { get; set; }
    public string Content { get; set; }
    public List<RelatedPages> RelPages1 { get; set; }
    public List<RelatedPages> RelPages2 { get; set; }
}

这是我的RelatedPages课:

public class RelatedPages
{
    public int ID { get; set; }
    public int? Page1ID { get; set; }
    public Page Page1 { get; set; }
    public int? Page2ID { get; set; }
    public Page Page2 { get; set; }
}

我想从Page中获取RelatedPages实例,反之,像context.RelatedPages.Single(r => r.ID==1).Page2.UrlName一样,尽管我有NullReferenceException。
这是在我的OnModelCreating中的DbContext中:

 modelBuilder.Entity<RelatedPages>()
                    .HasOne(x => x.Page1)
                    .WithMany(x => x.RelPages1)
                    .HasForeignKey(x => x.Page1ID);

 modelBuilder.Entity<RelatedPages>()
                    .HasOne(x => x.Page2)
                    .WithMany(x => x.RelPages2)
                    .HasForeignKey(x => x.Page2ID);

参考方案

尝试包含Page2

context.RelatedPages.Single(r => r.ID==1).Page2.UrlName更改为context.RelatedPages.Include(x=>x.Page2).Single(r => r.ID==1).Page2.UrlName

与哪些运算符>>兼容 - java

我这里没有什么代码int b=3; b=b >> 1; System.out.println(b); 它可以完美工作,但是当我将变量b更改为byte,short,float,double时,它包含错误,但是对于变量int和long来说,它可以完美工作,为什么它不能与其他变量一起工作? 参考方案 位移位运算符(例如>>)与任何整数类型兼…

>> Python中的运算符 - python

>>运算符做什么?例如,以下操作10 >> 1 = 5有什么作用? 参考方案 它是右移运算符,将所有位“右移”一次。二进制10是1010移到右边变成0101这是5

使用Entity Framework Core(2.1)调用标量函数的最佳实践 - c#

我经常需要从Web应用程序(ASP.NET Core / EF Core)中调用在SQL Server上定义的标量函数。由于这些函数只是简单的辅助函数,因此我也使用了许多辅助函数,因此我使用了通用模式来调用这些标量函数-借助EF Core 2.1可用的新查询类型。由于我是EF Core的新手,所以我的问题是这种模式是否会引起问题,并且/或者是否存在调用标量函…

如何使用实体框架扩展BulkInsert和AllowDuplicateKeys - c#

我正在将数据从CSV文件导入SQL Server DB,该CSV可能包含重复的条目。我现有的代码使用SqlBulkCopy()和“ IGNORE_DUP_KEY = ON”,所有重复都很好。我首先要使用EF Core和Zzz Projects实体框架扩展切换到代码。主键在DbContext中定义: protected override void OnMode…

ASP.NET Core Singleton实例与瞬态实例的性能 - c#

在ASP.NET Core依赖注入中,我只是想知道注册Singleton实例是否会比注册Transient实例更好地提高性能?在我看来,对于Singleton实例,创建新对象和相关对象只需花费一次时间。对于Transient实例,此成本将针对每个服务请求重复。因此Singleton似乎更好。但是,在Singleton上使用Transient时,我们可以获得多…