In mvc AktionEntity Framework 6 nehmen Datensätze, die in der Tabelle
Site site = siteRepository.UserSites(userId).Where(x => x.Order == siteOrder).Last();
In SiteRepository
public IEnumerable<Site> UserSites(string userId)
{
return context.Sites.Include("Pages").Where(x => x.UserId == userId);
}
und anderen Repositories
public IEnumerable<Row> Items
{
get
{
return context.Rows;
}
}
public IEnumerable<Page> Items
{
get
{
return context.Pages;
}
}
public IEnumerable<AbstractBuildBlock> Items
{
get
{
return context.BuildBlocks;
}
}
Ich weiß nicht, existieren nicht, warum , aber im Debugger sehe ich, dass nach der Anfrage an UserSites (das erste Repository - Code - Snippet), in Site.Rows gibt es einen weiteren Datensatz, es ist der ersten Datensatz und es erstellt von Row Konstruktor, ich habe keine Ideen, warum es passiert.
Diese beiden Objekte haben verschiedene Arten der erste (die ich nicht verstehe) Domain.Entities.Row
geben hat, die zweite System.Data.Entity.DynamicProxies.Row_**********
(* - einige num)
Ich werde noch einmal wiederholen. In meiner Rows-Tabelle gibt es nur einen Datensatz, aber in Site.Pages [someIndex] .Rows nach der Anfrage an die Datenbank gibt es zwei Objekte und das erste existiert nicht in der Tabelle, es erstellt von Row-Konstruktor. Warum passiert es?
Code of Site-Klasse
public class Site
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required(ErrorMessage ="Please, enter the site local name")]
[Display(Name ="Local name")]
public string LocalName { get; set; }
[Required(ErrorMessage = "Please, enter the site public name")]
[Display(Name ="Public name")]
public string PublicName { get; set; }
[Display(Name ="Menu variant")]
public string MenuVariant { get; set; }
[Display(Name = "Color theme")]
public string ColorTheme { get; set; }
public string IconUrl { get; set; }
public string UserId { get; set; }
public int Order { get; set; }
public int NextPageOrder { get; set; }
public virtual List<TopMenuItem> TopMenuItems { get; set; }
public virtual List<LeftMenuItem> LeftMenuItems{ get; set; }
public virtual List<Page> Pages { get; set; }
public Page ActivePage { get; set; }
public int ActivePageIndex { get; set; }
public Site()
{
NextPageOrder = 1;
MenuVariant = "top";
ColorTheme = "dark";
}
}
Seite Klasse
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Title { get; set; }
public string Name { get; set; }
public virtual List<Row> Rows { get; set; }
public int SiteId { get; set; }
public virtual Site Site { get; set; }
public int Order { get; set; }
public int NextRowOrder { get; set; }
public Page()
{
Title = "title";
Rows = new List<Row>()
{
new Row()
};
}
Es muss etwas in Ihrem Code sein. Können Sie den Code der 'Site' Klasse anzeigen? –
@IvanStoev Fertig. In diesem Moment lösche ich manuell die zusätzliche Zeile in der mvc-Aktion, aber ich würde gerne wissen, wo der Fehler liegt. – Nikita
Danke. Aber wo ist 'Site.Rows'? –