首页 > 解决方案 > 实体框架中的零或一对多

问题描述

我的情况如下: Periodic Task 实体可以有很多 Task,但是一个 Task 可以没有或只有一个 Periodic Task 与之关联。也就是说,我需要Task Periodic on Task的外键为空。但是,即使使用以下语句,我也无法通过实体框架进行此配置:

public int? PeriodicTaskID

有哪些可能的解决方案?

非常感谢。

public class Task
{
    public int TaskID { get; set; }

    public int? PeriodicTaskID { get; set; }

    public virtual PeriodicTask PeriodicTask { get; set; }
}

public class PeriodicTask
{
    public int PeriodicTaskID { get; set; }

    public virtual ICollection<Task> Tasks { get; set; }
}

标签: c#entity-frameworkentity-framework-6

解决方案


您可以像这样通过数据注释定义关系;

public class Task
{
    public int TaskID { get; set; }

    public int? PeriodicTaskID { get; set; }
    [ForeignKey("PeriodicTaskID ")]
    public virtual PeriodicTask PeriodicTask { get; set; }
}

通过流畅的 API;

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    //..
    modelBuilder.Entity<Task>()
        .HasOne(t => t.PeriodicTask)
        .WithMany(pt => pt.Tasks);
}

推荐阅读