0

最初にコードを使用して多対多の関係をマップしたい場合、EF 5 で問題が発生します。これは私のシナリオです:

public class SegFunction
{
    public virtual string Idaplication {get;set;}

    public virtual string Idfunction {get;set;}

    public virtual List<SegRole> Roles { get; set; }

}

public class SegRole
{
    public virtual int Idrole { get; set; }

    public virtual List<SegFunction> Functions { get; set; }

}

これは私の地図です:

private void MapSegRole()
    {
        this.modelBuilder.Entity<SegRole>()
        .Map(entity =>
        {
            entity.ToTable("seg_roles");
        });
        this.modelBuilder.Entity<SegRole>()
            .Property(t => t.Idrole).HasColumnName("id_role");
        this.modelBuilder.Entity<SegRole>()
             .HasKey(c => c.Idrole);


        modelBuilder.Entity<SegRol>()
       .HasMany(i => i.Functions)
       .WithMany(c => c.Roles)
       .Map(
        m =>
        {
            mc.ToTable("seg_role_function");
            m.MapRightKey("id_role");
            m.MapLeftKey("id_aplication");
            m.MapLeftKey("id_function");
        });
    }

private void MapSegFunction()
    {

        this.modelBuilder.Entity<Segfunction>()
        .Map(entity =>
        {
            entity.ToTable("seg_functions");
        });
        this.modelBuilder.Entity<Segfunction>()
            .Property(t => t.Idfunction).HasColumnName("id_function");
        this.modelBuilder.Entity<Segfunction>()
            .Property(t => t.Idaplication).HasColumnName("id_aplication");
        this.modelBuilder.Entity<Segfuncion>()
            .HasKey( d => new { d.Idaplication, d.Idfunction});

        this.modelBuilder.Entity<Segfunction>()
           .HasMany(t => t.Roles)
           .WithMany(r => r.Functions)
            .Map(mc =>
            {
                mc.ToTable("seg_role_function");
                mc.MapLeftKey("id_role");
                mc.MapRightKey("id_aplication");
                mc.MapRightKey("id_function");
            });





    }

Seg_Role、Seg_Function、Seg_role_function の 3 つのテーブルがあり、seg_function には複合主キー (id_aplication、id_function) があり、seg_role_function には複合キー (id_role、id_aplication、id_function) があります。

コンテキストから取得しようとすると、次のエラーが発生します。

指定された関連外部キー列 'id_role' は無効です。指定する列数は、主キー列の数と一致する必要があります。

4

1 に答える 1