Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#ef框架一对一映射不起作用_C#_Postgresql_Entity Framework_.net Core_One To One - Fatal编程技术网

c#ef框架一对一映射不起作用

c#ef框架一对一映射不起作用,c#,postgresql,entity-framework,.net-core,one-to-one,C#,Postgresql,Entity Framework,.net Core,One To One,我试图使用代码优先的方法映射一对一的映射,但我一直面临一个错误,即inversepropertyattributes没有相互指向 InversePropertyAttributes on navigation 'Scheduler' in entity type 'Configuration' and on navigation 'Configuration' in entity type 'Scheduler' are not pointing to each other. 我正在使用此文档

我试图使用代码优先的方法映射一对一的映射,但我一直面临一个错误,即inversepropertyattributes没有相互指向

InversePropertyAttributes on navigation 'Scheduler' in entity type 'Configuration' and on navigation 'Configuration' in entity type 'Scheduler' are not pointing to each other.
我正在使用此文档(),但它仍然不起作用。我在EF框架中创建OneTONE关系时犯了什么错误

这是我的剧本:

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);
    });
}
[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; }
}
[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; }
}
Scheduler.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);
    });
}
[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; }
}
[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; }
}

EF6仅支持依赖表的主键也是外键的1-1关系。EF Core支持这样的唯一约束和1-1关系。请参阅@DavidBrowne Microsoft感谢您的链接,它现在可以工作了。非常感谢。