实体框架核心:使用可为空的外键将多对一关系

时间:2019-07-01 10:46:10

标签: c# entity-framework-core

我的数据库中有两个表:

public class PARENT
{
    public string ID_PARENT { get; set; }    
    public int? ID_PARENT_BIS { get; set; }    

    public List<CHILD> CHILDREN { get; set; } 
}

此表有一个主键:ID_PARENT

ID_PARENT_BIS被用于多种关系。

public class CHILD
{
    [Required]
    public string PID_CHILD { get; set; } 

    public int ID { get; set; }
    public int? ID_PARENT_BIS { get; set; } 

    [Required]
    public string ID_EXTCHILD { get; set; } 
}

在两者之间,存在一对多的关系。这是映射:

modelBuilder.Entity<PARENT>(entity =>
        {
            entity.HasKey(e => e.ID_PARENT);

            entity.HasMany(a => a.CHILDREN)
                .WithOne()
                .HasForeignKey(i => i.ID_PARENT_BIS)
                .HasPrincipalKey(i => i.ID_PARENT_BIS);
        });

映射是正确的,但是当我要检索PARENT的所有元素时,出现以下错误:

  

处理请求时发生未处理的异常。 InvalidCastException:内容连续NULL(列包含空数据)

我的关系需要配置为使用ID_PARENT_BIS,而不是ID_PARENT。因为ID_PARENT_BIS在数据库中可以为null。这是项目的先决条件。

那么使用Entity Framework Core真的有可能做到这一点吗?

谢谢!

0 个答案:

没有答案