1

EF に問題があります。「MenuPai_Id」や「MenuPai_Id1」のような列が重複しています。ここにクラスがあります。

public class Menu :EntidadePadrao
{
    public int? MenuPai_Id { get; set; }

    public virtual Menu MenuPai { get; set; }
    public virtual ICollection<Menu> MenusFilhos { get; set; }
    public virtual ICollection<PerfilUsuarioMenu> PerfisUsuario { get; set; }
}

public class MenuMap : EntityTypeConfiguration<Menu>
{
    public MenuMap()
    {
        // Primary Key
        this.HasKey(t => t.Id);           
        this.ToTable("Menu");
        this.Property(t => t.MenuPai_Id).HasColumnName("MenuPai_Id");

        this.HasOptional(t => t.MenuPai)
            .WithMany(t => t.MenusFilhos)
            .HasForeignKey(d => d.MenuPai_Id);
    }
}

そして、これはテーブル用に生成された sql です。

CREATE TABLE [dbo].[Menus] (
[Id] [int] NOT NULL IDENTITY,
[Sequencia] [int] NOT NULL,   
[MenuPai_Id] [int],   
[MenuPai_Id1] [int],
CONSTRAINT [PK_dbo.Menus] PRIMARY KEY ([Id]))
ALTER TABLE [dbo].[Menus] ADD CONSTRAINT [FK_dbo.Menus_dbo.Menus_MenuPai_Id1]
FOREIGN KEY ([MenuPai_Id1]) REFERENCES [dbo].[Menus] ([Id])

プロジェクトには、このような他のマッピングがあり、自動的に生成され、正常に動作しています。このクラスだけを手動で追加しましたが、なぜ同じように機能しないのかわかりません。

助けていただければ幸いです。

編集:私はこれを忘れました:

modelBuilder.Configurations.Add(new MenuMap());
4

1 に答える 1

1

MenuId主キーであるため、null 可能であってはなりません。

public class Menu :EntidadePadrao
{
    public int MenuId { get; set; }
    public int MenuPai_ID {get; set; }

    // Navigation List
    public Menu MenuPai { get; set; }
    public virtual ICollection<Menu> MenusFilhos { get; set; }
    public virtual ICollection<PerfilUsuarioMenu> PerfisUsuario { get; set; }
}

MenuPai_ID次に、構成で EFにnullableであることを伝えます。

public MenuMap()
{
    // Primary Key
    this.HasKey(t => t.MenuId);

    // Property and Mapping
    this.ToTable("Menu");

    this.Property(t => t.MenuPai_ID)
        .IsOptional()
        .HasColumnName("MenuPai_ID");

    // Relationship
    this.HasOptional(t => t.MenuPai)
        .WithMany(t => t.MenusFilhos)
        .HasForeignKey(d => d.MenuPai_Id);
}
于 2012-12-29T00:52:12.657 に答える