微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。