NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Chyba při načítání OneToMany vazby | Entity framework

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Jan Pekala
Člen
Avatar
Jan Pekala:22.2.2018 19:42

Ahojte, mám entitu User, která vypadá následovně

public class User
{
    public int UserId { get; set; }
    public string Name { get; set; }
    public DateTime CreatedAt { get; set; }

    public virtual Settings Settings { get; set; }
    public ICollection<Information> Informations { get; set; }
}

Potřeboval bych vytáhnout tu kolekci informací spolu s odkazem na Settings objekt, zkouším to přes následující funkci:

public List<User> LoadUsers(params string[] includes)
{
    var query = this.Database.Users.Select(u => u);
    foreach (string include in includes)
    {
        query.Include(include);
    }

    query.OrderByDescending(u => u.UserId);
    return query.ToList();
}

a volám ji takhle

List<User> users = this.UserRepository.LoadUsers("Settings", "Informations");

Jen je problém, že Information je vždy null, ale settings to chytne :-(
Migrace hotová a databáze updatovaná.
Nevíte čím to může být ?
Díky moc

 
Odpovědět
22.2.2018 19:42
Avatar
JOF
Tvůrce
Avatar
Odpovídá na Jan Pekala
JOF:23.2.2018 16:06

Ahoj,

zkus upravit příkaz query.Include(in­clude); na query = query.Include(in­clude);.
To, že ti to "chytne" Settings nemusí být pravda, protože Settings máš definované jako virtual, takže mohou být donačteny LazyLoadingem, zatímco Information ne.

 
Nahoru Odpovědět
23.2.2018 16:06
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.