问题描述
我正在尝试使用代码优先方法来一对一映射,但是我一直面对一个错误,指出反向属性属性没有指向彼此。
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 (将#修改为@)