Kłopoty z mapowaniem Entity

0

Witam, pojawił mi się taki dziwny błąd z mapowaniem:

Multiplicity conflicts with the referential constraint in Role 'MenuItem_MainMenu_Target' in relationship 'MenuItem_MainMenu'. Because all of the properties in the Dependent Role are non-nullable, multiplicity of the Principal Role must be '1'.

w kodzie:

     public class MainMenuMapping : EntityTypeConfiguration<MainMenu>
    {
        public MainMenuMapping()
            : base()
        {
            this.HasKey(e => e.Id).Property(e => e.Id).HasColumnName("Id");
            this.Property(e => e.Title).HasColumnName("Title");
            this.Property(e => e.Controller).HasColumnName("Controller");
            this.Property(e => e.View).HasColumnName("View");
            this.Property(e => e.Parameters).HasColumnName("Parameters");
            this.ToTable("MainMenu");
        }
    }
    public class MenuItemMapping : EntityTypeConfiguration<MenuItem>
    {
        public MenuItemMapping()
            : base()
        {
            this.HasKey(e => e.Id).Property(e => e.Id).HasColumnName("Id");
            this.Property(e => e.Parent).HasColumnName("Parent");
            this.Property(e => e.Title).HasColumnName("Title");
            this.Property(e => e.Controller).HasColumnName("Controller");
            this.Property(e => e.View).HasColumnName("View");
            this.Property(e => e.Parameters).HasColumnName("Parameters");
            this.HasOptional(e => e.MainMenu).WithMany(x => x.MenuItem).HasForeignKey(e => e.Parent).WillCascadeOnDelete();
            this.ToTable("MenuItem");
        }
    }

Wiecie jak to naprawić??

0

Ten problem rozwiązałem :) okazało się że zapomniałem iż obiekty do których mapuję relacje, muszą być wirtualne(virtual).
Ale pojawił się inny problem, mianowicie, gdy chcę stworzyć relację "opcjonalną", (nie każdy odnośnik menu, ma pod odnośniki), wywala mi taki błąd:
"Istnieje już skojarzony z tym poleceniem otwarty element DataReader, który należy najpierw zamknąć poleceniem (Command)"
Wiecie co on oznacza i jak go naprawić??

1

Błąd informuje że w otwartym DataReader , próbowałeś użyć kolejny obiekt DataReader. W ADO.NET rozwiązaniem tego problemu jest MARS (Multiple Active Result Sets), musisz poszukać w Entity odpowiednika MARS.

usunięcie cytowania całego poprzedniego posta - furious programming

2

Okej, już rozwiązałem, dodałem w connectionString: MultipleActiveResultSets=True

1 użytkowników online, w tym zalogowanych: 0, gości: 1