c#ef框架一对一映射不起作用
我试图使用代码优先的方法映射一对一的映射,但我一直面临一个错误,即inversepropertyattributes没有相互指向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 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感谢您的链接,它现在可以工作了。非常感谢。