IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Majkel
Člen
Avatar
Majkel:11.8.2016 20:54

Ahoj, v EF Code First mám vazbu 1:N mezi User a UserDevice, kdy jeden User může mít N UserDevice.

public class User
    {
        [Key]
        public int Usr_Id { get; set; }
        [Required]
        [MaxLength(35)]
        public string Name { get; set; }
        [Required]
        [MaxLength(35)]
        public string Surname { get; set; }
        [Required]
        [MaxLength(35)]
        public string Location { get; set; }

        //NAVIGATION
        public User()
        {
            UserDevices = new List<UserDevice>();
        }

        public virtual ICollection<UserDevice> UserDevices { get; set; }

    }

public class UserDevice
    {
        [Key]
        public int UsrDev_Id { get; set; }
        [Required]
        [MaxLength(50)]
        public string PurposeOfUse { get; set; }

        // NAVIGATION
        //User can have many UserDevice
        public int Usr_Id { get; set; }
        public virtual User User { get; set; }
    }

A ještě konfigurace ve FluentAPI

modelBuilder.Entity<UserDevice>()
               .HasRequired<User>(r => r.User)
               .WithMany(m => m.UserDevices);

Můj problém je, že když zapíšu

var select = from s in db.Users
                         select s;

tak se mi naloaduje nejen seznam User, ale i seznam UserDevice ke každému z nich. Jakým způsobem můžu udělat select, abych získal pouze seznam User bez UserDevice.

 
Odpovědět
11.8.2016 20:54
Avatar
Marian Benčat:13.8.2016 0:22

Ne, to se ti nenaloaduje.. jen tam mas by default zapnuty lazy loading aa mas tam virtual kolekci, takzev okamziku, kdy se na to snazsi pristoupit (treba jen v debugu ukazes mysi) tak se ti ty devicy naloadi ;-) jestli to chces vypnout, tak dej pryc to virtual, nebo vypni kompletne lazy loading,, nebo udelej select new.. (projekci), ale ne select s --> jinak se stale jedna o dynamic proxy s lazy loadingem.

Editováno 13.8.2016 0:23
Nahoru Odpovědět
13.8.2016 0:22
Totalitní admini..
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.