如何解决EF Core Fluent API 语句作为数据注释
我可以在 EF Core 中用数据注释来写这个吗?
modelBuilder.Entity<DiagramComponent>()
.HasOne(c => c.Compressor)
.WithMany(c => c.Components);
解决方法
您将不得不再创建一个类:
public class DiagramComponentComponent
{
public int DiagramComponentId { get; set; }
public int ComponentId { get; set; }
[ForeignKey(nameof(DiagramComponentId))]
public virtual DiagramComponent DiagramComponent { get; set; }
[ForeignKey(nameof(ComponentId))]
public virtual Component Component { get; set; }
}
并向现有类添加属性:
public class DiagramComponent
{
public int CompressorId { get; set; }
[ForeignKey(nameof(CompressorId))]
[InverseProperty("DiagramComponents")]
public virtual Compressor Compressor { get; set; }
[InverseProperty(nameof(DiagramComponentComponent.DiagramComponent))]
public virtual ICollection<DiagramComponentComponent> DiagramComponentComponents { get; set; }
}
public class Compressor
{
[InverseProperty(nameof(DiagramComponent.Compressor))]
public virtual ICollection<DiagramComponent> DiagramComponents { get; set; }
}
public class Component
{
[InverseProperty(nameof(DiagramComponentComponent.Component))]
public virtual ICollection<DiagramComponentComponent> DiagramComponentComponents { get; set; }
}
并添加到 dbcontext:
modelBuilder.Entity<DiagramComponentComponent>(entity =>
{
entity.HasOne(d => d.DiagramComponent )
.WithMany()
.HasForeignKey(d => d.DiagramComponentId )
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_DiagramComponentComponent_Component_Diagram");
entity.HasOne(d => d.Component)
.WithMany()
.HasForeignKey(d => d.ComponentId )
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_DiagramComponentComponent_Component");
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。