C#EF框架一对一映射不起作用

问题描述

我正在尝试使用代码优先方法来一对一映射,但是我一直面对一个错误,指出反向属性属性没有指向彼此。

InversePropertyAttributes on navigation 'Scheduler' in entity type 'Configuration' and on navigation 'Configuration' in entity type 'Scheduler' are not pointing to each other.

我正在使用此文档(https://www.entityframeworktutorial.net/efcore/configure-one-to-one-relationship-using-fluent-api-in-ef-core.aspx),但仍无法使用。在EF框架中创建一对一关系时,我在哪里犯了错误

这是我的脚本:

CREATE TABLE IF NOT EXISTS configuration
(    
    id                          UUID            PRIMARY KEY,code                        TEXT            NOT NULL,name                        TEXT            NOT NULL,description                 TEXT            NOT NULL,scheduler_id                UUID  UNIQUE    NOT NULL,CONSTRAINT scheduler_fk FOREIGN KEY(scheduler_id) REFERENCES scheduler(id)
);

CREATE TABLE IF NOT EXISTS scheduler
(
    id                  UUID            PRIMARY KEY,initiated_by        TEXT            NOT NULL
);

DBContext.cs

public virtual DbSet<Scheduler> scheduler { get; set; }
public virtual DbSet<Configuration> configuration { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.HasDefaultSchema("public");
    modelBuilder.HasPostgresEnum<SourceDestinationEnum>();
    modelBuilder.HasPostgresEnum<HttpActionEnum>();

    modelBuilder.Entity<Scheduler>(entity =>
    {
            entity.HasOne<Configuration>(o => o.Configuration)
                .WithOne(o => o.Scheduler)
                .HasForeignKey<Configuration>(sa => sa.SchedulerId);
    });
}

Configuration.cs

[Table("configuration",Schema = "public")]
public class Configuration
{
    [Key]
    [Column("id")]
    public Guid ConfigurationId { get; set; }

    [Column("code")]
    public string Code { get; set; }

    [Column("name")]
    public string Name { get; set; }

    [Column("description")]
    public string Description { get; set; }

    [Column("scheduler_id")]
    public Guid SchedulerId { get; set; }

    [ForeignKey("SchedulerId")]
    [InverseProperty("Configuration")]
    public Scheduler Scheduler { get; set; }
}

Scheduler.cs

[Table("scheduler",Schema = "public")]
public class Scheduler
{
    [Key]
    [Column("id")]
    public Guid SchedulerId { get; set; }

    [Column("initiated_by")]
    public string InitiatedBy { get; set; }

    [InverseProperty("MappingConfiguration")]
    public virtual Configuration Configuration { get; set; }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)