小编Sve*_*ven的帖子

使用 Entity Framework Core 5 的自引用表

我的应用程序中有一个自引用实体。与其他包类型具有依赖关系(作为列表)的包类型。我正在尝试使用模型生成器设计所需的中间表。不幸的是我无法正确填写密钥。

System.InvalidOperationException:“无法跟踪“PackageDependency(Dictionary <string,object>)”类型的实体,因为其主键属性“DependencyId”为空。”

    public class PackageType
    {
        [Key]
        public String Tag { get; set; }

        public virtual List<PackageType> Dependencies { get; set; } = new List<PackageType>();
    }

Run Code Online (Sandbox Code Playgroud)

数据库上下文:

 protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<PackageType>()
                .HasMany(p => p.Dependencies)
                .WithMany(p => p.Dependencies)
                .UsingEntity<Dictionary<string, object>>(
                    "PackageDependency",
                    j => j
                        .HasOne<PackageType>()
                        .WithMany()
                        .HasForeignKey("PackageId")
                        .HasConstraintName("FK_PackageDependency_PackageId")
                        .OnDelete(DeleteBehavior.Cascade),
                    j => j
                        .HasOne<PackageType>()
                        .WithMany()
                        .HasForeignKey("DependencyId")
                        .HasConstraintName("FK_PackageDependency_DependencyId")
                        .OnDelete(DeleteBehavior.ClientCascade),
                    e => e.HasKey("PackageId", "DependencyId"));
        }
Run Code Online (Sandbox Code Playgroud)

有人给我提示吗?

多谢!

entity-framework-core .net-core

4
推荐指数
1
解决办法
706
查看次数

标签 统计

.net-core ×1

entity-framework-core ×1