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