实体框架 - 反向财产关系?

时间:2018-01-31 19:43:28

标签: c# entity-framework entity-framework-core

我无法理解如何完成以下关系:

public class Organisation {

    public Guid Id { get; set; }

    // Have a single user as an administrator of a company
    public User AdminUser { get; set; }

    // All users associated with the company (including the admin)
    public ICollection<User> Users { get; set;}
}

public class User {

    public Guid Id { get; set; }

    // Each User must be associated with an Organisation.
    [ForeignKey("Organisation")]
    public Guid OrganisationId { get; set; }
    public Organisation Organisation { get; set; }
}

这可以通过反向属性完成吗?我知道它们是定义相同实体之间多个关系的解决方案,但我很难看到如何根据我的情况设置它。有人可以通过示例代码提供帮助吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

除了属性注释,您还可以使用流畅的配置。它们比注释更强大,更灵活,允许您在同一实体之间配置多个关系。

您可以在OnModelCreating课程的DbContext方法中定义配置:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   modelBuilder.Entity<Organisation>()
        .HasMany(o => o.Users)
        .WithOne(u => u.Organisation);

   modelBuilder.Entity<Organisation>()
        .HasOne(o => o.AdminUser)
        .WithOne(u => u.Organisation);
}

有关流畅配置的更多信息:here。  关于一对多关系:here。关于反向导航属性:here